[置顶]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'<div class=\\"title\\"><a target=\\"_blank\\" href=\\"\\/question\\/(.*?)\\"'
 33         all_question_href=re.findall(question_href_reg
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值