yield scrapy.Request()无效的几种情况

scrapy错误:yield scrapy.Request()不执行、失效、Filtered offsite request to错误。首先我们在Request()方法里面添加这么一个东东:

yield Request(url, callback=self.parse_item, dont_filter=True)

如果发现成功执行,那你就得检查一下你的:allowed_domains,看看前面是不是添加了:http://  ,如(错误写法):

 allowed_domains = ["http://www.baidu.com"]

正确写法:

allowed_domains = ["www.baidu.com"]

去掉之后,把dont_filter=True也去掉,也能正常执行,其实这里是allowed_domains和去重出现了冲突,scrapy allowed_domains判断不严谨产生的问题,所以书写allowed_domains的时候一定不要加:http://

 

其次 yield必须出现在response的方法内部 即必须成对使用

      def parse_link_street(self, response):
                    yield scrapy.Request(
                        url='‘’
                        meta=‘’,
                        callback=‘’,
                        dont_filter=True
                    )
而不能出现如下情况

  def parse_link_street(self):
                    yield scrapy.Request(
                        url='‘’
                        meta=‘’,
                        callback=‘’,
                        dont_filter=True
                    )
 

### 回答1: 这段代码是使用Scrapy框架中的yield语句发送一个请求(request)。yield语句可以暂停函数的执行,并返回一个生成器(generator)对象,以便稍后可以恢复函数的执行。在Scrapy框架中,使用yield语句可以方便地生成一系列的请求,以便后续爬虫程序处理。在这里,使用yield scrapy.request发送一个请求,Scrapy会根据请求的URL地址自动下载该网页的HTML代码,并将其作为响应(response)对象传递给爬虫程序处理。 ### 回答2: yield scrapy.requestScrapy框架中用于发起HTTP请求的关键方法之一。首先需要了解一下Scrapy的工作流程。Scrapy框架主要是由Spider、Item Pipeline、Downloader以及Scheduler四个部分组成,其中,Spider是基本的爬虫逻辑部分,主要负责从起始URL开始抓取页面,并通过XPath或CSS Selector等方式解析出目标数据。而当需要获取更多的数据时,需要使用到发起HTTP请求的方法,这时候就需要使用到yield scrapy.request。 通过yield scrapy.request发起的请求,一般会包含URL、回调函数和请求头等信息,其中URL表示请求地址,回调函数表示请求完成后要执行的函数,而请求头则包含了一些请求的元信息,例如Cookie、User-Agent、Referer等。只有通过发起请求,才能让Scrapy向目标网站发送请求并获取响应,进而进行下一步的数据解析和爬取工作。 在实际使用Scrapy框架时,yield scrapy.request方法可以放在Spider类的parse方法中,表示Scrapy会先发起请求,然后在请求完成后将响应交给下一个函数进行处理。这个下一个函数是通过回调函数的方式来指定的,可以在爬虫类中自定义一个函数,然后将其作为参数传递给yield scrapy.request函数。这样,当请求完成后,Scrapy就会将响应数据传递给这个函数进行处理。 综上所述,yield scrapy.request方法是Scrapy中用于发起HTTP请求的重要方法之一,可以方便地向目标网站发送请求并获取响应,进而完成数据的爬取和处理工作。同时,这个方法也需要搭配其他组件一起使用,才能构成完整的爬虫流程。 ### 回答3: yield scrapy.requestScrapy 框架中发送请求的关键方法,它主要用于生成 Request 对象并传递给 Scrapy 引擎,由引擎进行下一步处理。 在使用 Scrapy 写爬虫时,首先需要编写一个 Spider 类,这个类包含了爬取数据的逻辑。在这个类中定义一个 start_requests 方法,用于生成第一个请求,并通过 yield scrapy.request 方法将请求发送出去。在这个方法中,可以设置请求的地址、请求头、请求参数等信息,以达到更精细的爬取目的。 需要注意的是,在发送请求时,可以指定回调函数,该函数用于处理响应数据。如果不指定回调函数,则使用默认的 parse 函数进行处理。此外,发送的请求可以是GET请求或POST请求,通过设置请求方法即可实现。 除了在 Spider 类中使用 yield scrapy.request 方法发送请求之外,在中间件中也可以使用此方法对请求进行加工和处理。同时,yield scrapy.request 方法也可以用于处理一些动态网页、ajax请求等需要自定义请求头和参数的场合。 总之,yield scrapy.requestScrapy 框架实现高效爬取的基础方法,掌握该方法的应用,可以提高爬虫的效率和精度。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>