使用Scrapy爬取知乎网站马化腾所有粉丝的信息
采集网址:https://www.zhihu.com/people/ponyma/followers
爬虫文件
import scrapy import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['zhihu.com'] start_urls = [ f'https://www.zhihu.com/api/v4/members/ponyma/followers?include=data%5B*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%5D.topics&offset={offset}0&limit=20' for offset in range(0, 200, 20)] def parse(self, response): # 打印请求头 # print(response.request.headers) json_data = json.loads(response.text) if json_data.get("data", False): for data in json_data['data']: item = data yield item
此网址采用抓包方式爬取
步骤一:打开采集网址 右边右键选择检查或者F12打开开发者模式
步骤二:
步骤三:点击页面中的下一页,注意不用刷新整个页面
步骤四:点击Headers找到对应请求网址
管道文件(pipelines.py)
import json class ZhihuspiderPipeline(object): def __init__(self): # 打开文件 self.file = open("zhihu.json", "a", encoding="utf-8") def process_item(self, item, spider): self.file.write(json.dumps(item, ensure_ascii=False) + "\n") return item def close_spider(self, spider): # 关闭文件 self.file.close()
配置文件(settings.py)
步骤一:关闭网址的robotstxt协议
步骤二:设置请求头
步骤三:激活管道文件
运行程序
方法① :使用终端执行文件
进入文件的目录下使用命令:scrapy crawl 爬虫名
方法② :使用文件运行
在文件的目录下创建run_spider.py 文件,这里的文件名可以随意起