在网页上找到手机版返回的数据
- 豆瓣手机版电视网址
- 找到返回数据的文件
- 找到返回数据的网址
- 在每页返回数据的网址中找到网址的的规律
在这里找出规律,起始的start为0然后每页和每页间隔18,在下面的中发现数据total应该代表的数据的条数
编写爬虫代码
-
在编写前查看url得知是否可以优化
https://m.douban.com/rexxar/api/v2/subject_collection/tv_american/items?os=ios&for_mobile=1&callback=jsonp1&start=0&count=18&loc_id=108288&_=0
最后优化成:start位置的值预留出来可以使用.format来进行匹配
https://m.douban.com/rexxar/api/v2/subject_collection/tv_american/items?start={}&count=18
-
在直接用浏览器打开的网址的时候出现只有这写数据:
{"msg": "invalid_request_1284", "code": 1287, "request": "GET \/rexxar\/v2\/subject_collection\/tv_american\/items", "localized_message": ""}
原因是:因为豆瓣使用的反爬虫的原因,防止别人抓取数据,解决方法是:- 要在headers中加上Referer: https://m.douban.com/tv/american这个内容,只有user-agent是不行的,就会爬取不到数据
- 要在headers中加上Referer: https://m.douban.com/tv/american这个内容,只有user-agent是不行的,就会爬取不到数据
-
代码如下:
# coding=utf-8 import requests import json class DoubanSpider