Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy请求方法不起作用_Python_Web Scraping - Fatal编程技术网

Python Scrapy请求方法不起作用

Python Scrapy请求方法不起作用,python,web-scraping,Python,Web Scraping,我试图使用下面的Scrapy的Request方法,但它没有调用回调self.link\u to\u problem。当我调用print path时,url都打印正确,我还尝试在浏览器中打开这些url,格式正确。有人能识别代码中是否有错误吗 from scrapy.spiders import CrawlSpider, Rule from scrapy.linkextractors import LinkExtractor from scrapy.http.request import Reque

我试图使用下面的
Scrapy
Request
方法,但它没有调用
回调
self.link\u to\u problem
。当我调用
print path
时,url都打印正确,我还尝试在浏览器中打开这些url,格式正确。有人能识别代码中是否有错误吗

from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
from scrapy.http.request import Request
import scrapy

def parse_item(self, response):
    for link in response.xpath("//div[@id='siteTable']//div[@class='entry unvoted']/p[@class='title']/a/@href").extract():
        path = "https://www.reddit.com" + str(link)
        print path
        yield Request(path, callback=self.link_to_problem, errback = self.error_print)

def link_to_problem(self, response):
        print response
        print "------------------------------------------------------------------------------------------"

即使发布的代码是正确的,您的刮板也很可能无法工作(乍一看,我觉得是这样的)

原因/问题:reddit.com阻止所有客户端的请求,这些客户端没有用户代理头集,看起来像真正的浏览器。

默认情况下,Scrapy将“scrapybot”作为用户代理发送,因此将被阻止

解决方案:像真正的浏览器一样在请求中设置用户代理头

这可以通过在scrapy项目的settings.py文件中添加以下行来完成


USER\u AGENT='Mozilla/5.0(X11;Ubuntu;Linux x86\u 64;rv:52.0)Gecko/20100101 Firefox/52.0'

是否调用了
链接到问题
?你查过了吗?问问题时也要格外小心。没有调用任何
链接到\u问题
,因此我认为调用请求方法可能有问题。我没有发现代码中有任何问题。请仔细查看项目设置和代码。否则,请尝试删除errback。