Scrapy - 下载响应时的不同页面内容



>我正在尝试解析页面,例如www.page.com/results?sort=price.我正在用这段代码解析它:

def start_requests(self):
start_urls = [
"www.page.com/results?sort=price",
]
for url in start_urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
# some code
next_page = "www.page.com/results?sort=price&type=12"
yield response.follow(next_page, self.get_models)
def get_models(self, response):
f = open('/tmp/test/file1.txt', 'w')
f.write(response.url)
f.write(response.body.decode('utf-8'))
f.close()

输出文件不同于以下代码生成的文件:

def start_requests(self):
start_urls = [
"www.page.com/results?sort=price&type=12",
]
for url in start_urls:
yield scrapy.Request(url=url, callback=self.get_models)
def get_models(self, response):
f = open('/tmp/test/file2.txt', 'w')
f.write(response.url)
f.write(response.body.decode('utf-8'))
f.close()

当我通过scrapy shell 'www.page.com/results?sort=price&type=12'下载页面时,输出类似于file2.txt。问题是,在 file1.txt 中,没有包含我需要抓取的数据的标签。这两种抓取页面的方式有什么区别,为什么下载的文件不同?

我认为在第二种情况下,您会转到错误的URL。检查日志以确保。我不确定 response.follow 是如何工作的。我认为没有任何理由在这里使用它,因为您使用的是完整的URL(不仅是路径(。 尝试将其更改为简单Request

def parse(self, response):
# some code
next_page = "www.page.com/results?sort=price&type=12"
yield scrapy.Request(next_page, self.get_models)

最新更新