[置顶]scrapy 知乎关键字爬虫spider代码

以下是spider部分的代码。爬知乎是需要登录的,建议使用cookie就可以了,如果需要爬的数量预计不多,请不要使用过大的线程数量,否则会过快的被封杀,需要等十几个小时账号才能重新使用,比起损失的这十几个小时的时间,即使是单线程也能够爬取很多页面了,得不偿失。

知乎是基于账号策略反爬的,换ua和ip并没用,如果需要高并发,需要采用几十个账号的方式来爬取。

  1 # -*- coding: utf-8 -*-
  2 import scrapy
  3 from scrapy import Request
  4 from scrapy import log
  5 import logging
  6 #from zhihu.items import ZhihuItem
  7 from zhihu.items import ZhihuItem
  8 from scrapy_redis.spiders import RedisSpider
  9 import re
 10 import json
 11 import time
 12 
 13 class BaoxianSpider(RedisSpider):       ##使用redis分布式
 14 
 15     name = "baoxian"
 16     allowed_domains = ["zhihu.com"]
 17     #redis_key='baoxian:start_urls'
 18     keywords='软件测试'                                        ###要爬的关键词
 19     from urllib import quote
 20     urlencode_keywords=quote(keywords)
 21 
 22     start_urls = ['https://www.zhihu.com/r/search?q='+urlencode_keywords+'&type=content&offset=0'] #'https://www.zhihu.com/r/search?q=%E4%BF%9D%E9%99%A9&type=content&offset=0'
 23     def start_requests(self):
 24         for url in self.start_urls:
 25             yield Request(url=url, callback=self.parse,dont_filter=True)
 26 
 27     def parse(self, response):
 28         body=response.body  #{"paging":{"next":"\/r\/search?q=%E4%BF%9D%E9%99%A9&type=content&offset=50"},"htmls"
 29         #print body
 30 
 31         #获取问题链接
 32         question_href_reg=r''
 33         all_question_href=re.findall(question_href_reg


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部