Scrapy请求未触发回调。“1”从未被打印。经过长时间的研究,仍无法解决。它无法在任何不同的URL上触发回调。
在default_settings.py中,指定了ROBOTSTXT_OBEY = False
。也指定了dont_filter=True
。
import scrapy as scrapy
class TheSpider(scrapy.Spider):
name = 'Test'
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
'Connection': 'keep-alive',
'Host': 'www.eventscribe.com',
'Referer': 'https://www.eventscribe.com/2018/ADEA/speakers.asp?h=Browse%20By%20Speaker',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
payload = {'as_epq': 'James Clark', 'tbs': 'cdr:1,cd_min:01/01/2015,cd_max:01/01/2015', 'tbm': 'nws'}
def run(self):
scrapy.Request(url='https://www.google.com/',
callback=self.parse, method='GET', headers=self.headers,
dont_filter=True)
def parse(self, response,**kwargs):
print('1')
self.log("I just visited:" + response.url)
scrapy.FormRequest.from_response(response, formdata={'startDate': '08.29.2021'},
clickdata={'id': 'calendar-picker-submit'},
method='POST',
callback=self.new_response, headers=self.headers,
dont_filter=True)
def new_response(self, response):
self.log("I just visited:" + response.url)
response.xpath("//div[@class='row numbers-past-results']/div[@class='ball-number']/text()").extract()
theSpider = TheSpider(scrapy.Spider)
theSpider.run()
有谁能帮忙吗?先谢谢了。
1条答案
按热度按时间rseugnpd1#
使用scrapy需要解决几个问题。我假设您的目的是将文件作为脚本运行,而不是使用scrapy CLI。下面是您的代码中的一些问题和可能的解决方案,但您似乎还应该阅读scrapy文档的快速入门部分。https://docs.scrapy.org/
start_requests
方法,而不是run
。通过这些更改,您现在可以看到在调用
parse
回调时将1
打印到屏幕上。