私はスクレイピーを使用しており、www.rentler.com をスクレイピングしたいと考えています。ウェブサイトにアクセスして、興味のある都市を検索しました。その検索結果のリンクは次のとおりです。
https://www.rentler.com/search?Location=millcreek&MaxPrice=
ここで、関心のあるすべてのリストがそのページに含まれているので、それらを 1 つずつ再帰的に処理したいと考えています。
各リストは以下にリストされています。
<body>/<div id="wrap">/<div class="container search-res">/<ul class="search-results"><li class="result">
各結果には<a class="search-result-link" href="/listing/288910">
クロールスパイダーのルールを作成し、href を参照して URL に追加する必要があることはわかっています。そうすれば、各ページに移動して、興味のあるデータを取得できます。
私はこのようなものが必要だと思います:
rules = (Rule(SgmlLinkExtractor(allow="not sure what to insert here, but this is where I think I need to href appending", callback='parse_item', follow=true),)
更新 *入力していただきありがとうございます。これが私が今持っているものです。実行しているように見えますが、こすりません: *
import re
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from KSL.items import KSLitem
class KSL(CrawlSpider):
name = "ksl"
allowed_domains = ["https://www.rentler.com"]
start_urls = ["https://www.rentler.com/ksl/listing/index/?sid=17403849&nid=651&ad=452978"]
regex_pattern = '<a href="listing/(.*?) class="search-result-link">'
def parse_item(self, response):
items = []
hxs = HtmlXPathSelector(response)
sites = re.findall(regex_pattern, "https://www.rentler.com/search?location=millcreek&MaxPrice=")
for site in sites:
item = KSLitem()
item['price'] = site.select('//div[@class="price"]/text()').extract()
item['address'] = site.select('//div[@class="address"]/text()').extract()
item['stats'] = site.select('//ul[@class="basic-stats"]/li/div[@class="count"]/text()').extract()
item['description'] = site.select('//div[@class="description"]/div/p/text()').extract()
items.append(item)
return items
考え?