上述代码,已经成功返回了item,打开setting.py文件中的pipelines设置,测试一下是否可以存储数据,顺便在
DEFAULT_REQUEST_HEADERS 配置一下request的请求参数。
setting.py
DEFAULT_REQUEST_HEADERS = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', "Host": "juejin.im", "Referer": "https://juejin.im/timeline?sort=weeklyHottest", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 浏览器UA" } ITEM_PIPELINES = { 'Juejin.pipelines.JuejinPipeline': 20, }本爬虫数据存储到mongodb里面,所以需要你在pipelines.py文件编写存储代码。
import time import pymongo DATABASE_IP = '127.0.0.1' DATABASE_PORT = 27017 DATABASE_NAME = 'sun' client = pymongo.MongoClient(DATABASE_IP,DATABASE_PORT) db = client.sun db.authenticate("dba", "dba") collection = db.jujin # 准备插入数据 class JuejinPipeline(object): def process_item(self, item, spider): try: collection.insert(item) except Exception as e: print(e.args)运行代码之后,如果没有报错,完善最后一步即可,在Spider里面将爬虫的循环操作完成
list_li = select.xpath("//ul[@class='tag-list']/li") # 获取所有的关注 for li in list_li: a_link = li.xpath(".//meta[@itemprop='url']/@content").extract()[0] # 获取URL # 返回拼接好的数据请求 yield scrapy.Request(a_link+"/following",callback=self.parse)所有的代码都已经写完啦
全站用户爬虫编写完毕,厉害吧。
扩展方向
爬虫每次只爬取关注列表的第一页,也可以循环下去,这个不麻烦
在setting.py中开启多线程操作
添加redis速度更快,后面会陆续的写几篇分布式爬虫,提高爬取速度
思路可以扩展,N多网站的用户爬虫,咱后面也写几个