【发布时间】:2020-04-25 20:46:55
【问题描述】:
我希望调整本教程 (https://medium.com/better-programming/a-gentle-introduction-to-using-scrapy-to-crawl-airbnb-listings-58c6cf9f9808) 以抓取此小型房屋列表站点:https://tinyhouselistings.com/。
本教程使用请求 URL 来获得一个非常完整和干净的 JSON 文件,但仅针对第一页这样做。似乎循环浏览我的 tinyhouselistings 请求 url 的 121 页应该非常简单,但我无法得到任何工作。本教程不会遍历请求 url 的页面,而是使用 scrapy splash,在 Docker 容器中运行以获取所有列表。我愿意尝试,但我只是觉得应该可以遍历这个请求 url。
这仅输出我的项目的 tinyhouselistings 请求 url 的第一页:
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。
任何帮助将不胜感激!
【问题讨论】: