环境
- Python 3.7
- PyCharm
基本介绍
目标是爬取猫眼电影TOP100榜并将相关的信息存储到本地。
流程分析
爬取网页
爬取网页时我们使用的是Python的request模块。
我们定义一个get_one_page(url, offset) 函数,作用就是根据传入的url将网页爬取下来,并返回网页的文本内容。
import requests
def get_one_page(url, offset):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'}
response = requests.get(url=url, headers=headers, params={
"offset": offset})
if response.status_code == 200:
return response.text
pass
else:
return None
pass
pass
except RequestException as e:
print("发生异常"+e.strerror)
return None
pass
pass
首先伪造一个请求头headers
然后通过requests的get方法将网页内容下载下来,紧接着进行判断如果请求成功既repsonse.status_code==200,那么返回网页的文本内容。
解析网页
解析网页时,我们首先确定下我们所需要爬取的信息。
- 影片排名
- 影片封面图片
- 影片名称
- 主演
- 发行时间
- 发行地区
- 评分
我们解析网页的代码如下:
def parse_one_page(html):
pattern = '<dd>.*?board-index.*?">(\d+)</i>.*?data-src="(.*?)".*?/>.*?movie-item-info.*?title="(.*?)".*?star">' + \
'(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(\d+)</i>.*?</dd>'
regex = re.compile(pattern, re.S)
items = regex.findall(html)
for item in items:
print(item)
yield {
'index':item[0],
'thumb':get_large_thumb(item[1]),
'title':item[2],
'actors':item[3].strip()[3:],
'release_time':get_release_time(item[4].strip()[5:]),
'area':get_release_area(item[4].strip()[