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)
最佳答案
您当前的方法存在两个问题:
- 后续请求应从解析函数返回(或产生)。
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/