python - Scrapy 不会回调除默认​​ 'parse' 之外的其他函数

标签 python python-3.x scrapy

allowed_domains = ["textfiles.com/100"]
start_urls = ['http://textfiles.com/100/']
def parse(self,response):
    link=response.css('a::attr(href)').extract()
    for i in link:
        temp="http://www.textfiles.com/100/"+i
        data=scrapy.Request(temp,callback=self.parsetwo)

“parsetwo”函数不会被调用。

def parsetwo(self,response):
    print(response.text)

最佳答案

您当前的方法存在两个问题:

  1. 后续请求应从解析函数返回(或产生)。
  2. allowed_domains = ["textfiles.com/100"] 使所有后续请求失败,因为域实际上是 textfiles.com

我做了这两项更改并使其发挥作用。

from scrapy import Spider
from scrapy import Request


class TextCrawler(Spider):
    name = 'Text'
    allowed_domains = ['textfiles.com']
    start_urls = ['http://textfiles.com/100/']

    def parse(self, response):
        link = response.css('a::attr(href)').extract()

        for i in link:
            temp = 'http://textfiles.com/100/' + i
            yield Request(temp, callback=self.parsetwo)

    def parsetwo(self, response):
        print(response.text)

关于python - Scrapy 不会回调除默认​​ 'parse' 之外的其他函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233335/

相关文章:

python - Python 3 中的 UTF-16 编码和日语

python - 如何让 Python 的 subprocess() 与 input() 交互?

python - tkinter 使用主窗口调整框架和内容的大小

python - Scrapy 返回零结果

python - 无法使用scrapy获取HTML表格中的行数

python - 与 Pillow 的 channel 组合

python - 抓取网站后发送带有附件的电子邮件

python - 用Scrapy向回调函数传递参数,这样可以在以后崩溃时接收参数

python - “str”不支持 Memcached 的缓冲区接口(interface)

python - 将 pandas 数据框行组合成单个向量