Я хочу адаптировать этот урок (https://medium.com/better-programming/a-gentle-introduction-to-using-scrapy-to-crawl-airbnb-listings-58c6cf9f9808) для очистки этого сайта от крошечных списков домов: https://tinyhouselistings.com/.
В этом руководстве используется URL-адрес запроса, чтобы получить очень полный и чистый файл JSON, но это делается только для первой страницы. Кажется, что просмотр 121 страницы моего URL-адреса запроса крошечных домиков должен быть довольно простым, но я не смог заставить что-либо работать. Учебник не просматривает страницы URL-адреса запроса, а использует scrapy spla sh, запускаемый в контейнере Docker для получения всех списков. Я хочу попробовать это, но я просто чувствую, что через этот запрос можно сделать l oop.
Это выводит только первую страницу только URL запроса tinyhouselistings для моего проекта:
import scrapy
class TinyhouselistingsSpider(scrapy.Spider):
name = 'tinyhouselistings'
allowed_domains = ['tinyhouselistings.com']
start_urls = ['http://www.tinyhouselistings.com']
def start_requests(self):
url = 'https://thl-prod.global.ssl.fastly.net/api/v1/listings/search?area_min=0&measurement_unit=feet&page=1'
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
_file = "tiny_listings.json"
with open(_file, 'wb') as f:
f.write(response.body)
Я пробовал это:
class TinyhouselistingsSpider(scrapy.Spider):
name = 'tinyhouselistings'
allowed_domains = ['tinyhouselistings.com']
start_urls = ['']
def start_requests(self):
url = 'https://thl-prod.global.ssl.fastly.net/api/v1/listings/search?area_min=0&measurement_unit=feet&page='
for page in range(1, 121):
self.start_urls.append(url + str(page))
yield scrapy.Request(url=start_urls, callback=self.parse)
Но я не уверен, как затем передать start_urls для анализа, чтобы записать ответ на json, записываемый в конец сценария.
Любая помощь будет высоко ценится!