Python scrapy.Request 无法下载网页

使用 scrapy.Request 方法来采集页面,但是却没有任何执行。

import scrapy
def ret(response):
    print('start print')
    print(response.body)


url = 'https://doc.scrapy.org/en/latest/intro/tutorial.html'
v = scrapy.http.Request(url=url, callback=ret)
print(url, v)

输出内容:

https://doc.scrapy.org/en/latest/intro/tutorial.html
<GET https://doc.scrapy.org/en/latest/intro/tutorial.html>

方法ret完全就没有执行,无法打印出对应的内容

阅读 2.8k
1 个回答

你只是定义了一个Request, 定义好的Request自己并不去去建立网络联接并下载, 而是能过scrapy的Downloader和Spider来完成.
参考官方文档:

一般来说,Request 对象在spiders中被生成并且最终传递到 下载器(Downloader),下载器对其进行处理并返回一个 Response 对象, Response 对象还会返回到生成request的spider中。

如果想让他运行, 可以定义如下的spider

import scrapy
from scrapy.spiders import CrawlSpider, Rule

url = 'https://doc.scrapy.org/en/latest/intro/tutorial.html'


def ret(response):
    print('start print\n')
    print(response.body)

def errorcb(err):
    print(err+"\n")
    pass



class MySpider(CrawlSpider):
    name="test"
    def start_requests(self):
        return [scrapy.http.Request(url=url, callback=ret, errback=errorcb)]

保存成文件scrapy_cb.py, 然后通过

scrapy runspider scrapy_cb.py 

来运行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进