从抓取豆瓣电影聊高性能爬虫思路
本篇文章将以抓取豆瓣电影信息为例来一步步介绍开发一个高性能爬虫的常见思路。
寻找数据地址
爬虫的第一步,首先我们要找到获取数据的地址。可以先到豆瓣电影 首页 去看看。
顶部导航为提供了很多种类型的入口,其中和电影有关的有:排行榜、选电影和分类。为了便于后续更精细的分析,这里选择进入分类页面,地址。通过浏览的开发工具,我们最终能确认数据来源是的
https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0
注意:如果有朋友熟悉前端并装有vue浏览器插件,就会发现豆瓣电影站点是vue开发的。这些基本web开发技能对于我们平时开发爬虫都是很有帮助的。
爬取首页数据
用浏览器打开上面的接口地址,我们就会发现它的返回数据为json格式。利用python的requests和json库,就可以把数据获取下来了。
这里我们只获取电影的标题、导演、评分和演员四个字段,代码如下:
import json
import requests
def crawl(url):
response = requests.get(url)
if response.status_code != 200:
raise Exception('http status code is {}'.format(response.status_code))
data = response.json()['data']
items = []
for v in data:
items.append({
'title': v['title'],
'drectors': v['directors'],
'rate': v['rate'],
'casts': v['casts']
})
return items
def main():
url = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0'
for item in crawl(url):
print(item)
if __name__ == "__main__":
main()
代码执行得到如下这些数据:
{'title': '绿皮