0
点赞
收藏
分享

微信扫一扫

学习记录:python获取猫眼信息

耳一文 2022-04-13 阅读 74

大数据孤儿的学习记录,一些学习日常,希望路过的大佬们提提意见。

  • 第一个有点样子的爬虫程序

    学了定向爬虫后,找了猫眼电影练了一下手,得到了即将上映的30部电影的信息,代码如下:

import requests
import bs4
from bs4 import BeautifulSoup

#获取网页内容
url = "https://www.maoyan.com/films?showType=2&sortId=2"
hd = {'user-agent':'Chrome/10'}
r = requests.get(url,timeout=30,headers=hd)
r.encoding = r.apparent_encoding
html = r.text

#bs4解析网页内容
datalist = []   #创建空列表,存储内容
soup = BeautifulSoup(html,"html.parser")
for div in soup.find_all('div',"movie-hover-info"):     #通过网页源代码找到目标数据所在的标签
    if isinstance(div,bs4.element.Tag):
        divs = div('div')
        divs[1].span.decompose()   #标签div中有子标签span,这里将span标签删除,把多余的字符串去掉。
        divs[2].span.decompose()
        divs[3].span.decompose()
        datalist.append([divs[0].text.strip(),divs[1].text.strip(),divs[2].text.strip(),divs[3].text.strip()])  #没有用string方法,因为标签中的字符串存在空格,会发生报错,要先删去空格

#将解析的网页内容打印出来        
num = len(datalist)
print("{0:^10}\t{1:^10}\t{2:{4}^10}\t{3:^10}".format("电影名称","电影类型","电影主演","上映时间",chr(12288)))
for i in range(num):
    d = datalist[i]
    print("{0:^10}\t{1:^10}\t{2:{4}^10}\t{3:^10}".format(d[0],d[1],d[2],d[3],chr(12288)))

  • 实验结果
    在这里插入图片描述

  • 学习中遇到的坑

1.网页有一定的反爬机制,多次爬取网站,会被识别出来是爬虫。能够正常访问网站(status_code返回200),但是无法获取网页内容,需要进入网页完成验证。
2.现在的网页源代码中字符串的信息往往伴有空格存在,经常会导致一些方法无法调用,如string,会返回错误(‘NoneType’ object is not callable)
3.要明确目标标签的位置,否则一顿解析猛如虎,结果返回全是空。

举报

相关推荐

0 条评论