我在 start_urls
中有一个网址抓取工具首次加载页面时,首先显示403错误页面,然后抓取工具将关闭。
我需要做的是在该页面上填写验证码,然后让我访问该页面。我知道如何编写绕过验证码的代码,但是我将这些代码放在我的蜘蛛类中?
当遇到同样的问题时,我还需要在其他页面上添加它。
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
class MySpider(CrawlSpider):
name = "myspider"
allowed_domains = ["mydomain.com"]
start_urls = ["http://mydomain.com/categories"]
handle_httpstatus_list = [403] #Where do I now add the captcha bypass code?
download_delay = 5
rules = [Rule(SgmlLinkExtractor(allow=()), callback='parse_item')]
def parse_item (self, response):
pass
答案 0 :(得分:5)
设置handle_httpstatus_list
以对待403
成功的回复代码:
class MySpider(CrawlSpider):
handle_httpstatus_list = [403]
至于绕过实际的验证码,您需要覆盖parse
来处理403
响应代码不同的所有网页:
def parse(self, response):
if response.status_code == 403:
return self.handle_captcha(response):
yield CrawlSpider.parse(self, response)
def handle_captcha(self, response):
# Fill in the captcha and send a new request
return Request(...)