Scrapy - другой контент страницы при загрузке response.body
Я пытаюсь разобрать страницу, например 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 нет тегов с данными, которые мне нужно сканировать. В чем разница между этими двумя способами сканирования страницы, почему загружаемый файл отличается?
1 ответ
Я думаю, что во втором случае вы идете не по адресу. Проверьте ваши журналы, чтобы убедиться. Я не уверен, как работает 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)