我是蟒蛇和scrapy的新手。对于大学项目,我需要在autoscout24.de域(德语)上刮取汽车分类广告。
以下是一个示例网站:http://ww3.autoscout24.de/classified/268487991?asrc=fa|as&testvariant=articles_t20&tierlayer=fa
我希望CrawlSpider以递归方式抓取“下一个提议”('nächstesAngebot'),但似乎无法从痕迹中提取链接。该网站的有趣部分应该是:
<div class="floatRight">
<span class="linkInvisible">
<span class="floatLeft">‹</span>
<span class="floatLeft marginLeftXS">
vorheriges Angebot
</span>
</span>
<p class="floatLeft marginLeftXS">|</p>
<a id="breadCrumbNextOffer" ng-click="breadCrumb.nextOffer('http://ww3.autoscout24.de/classified/266709231')">
<span class="floatLeft marginLeftXS">
nächstes Angebot
</span>
<p class="floatLeft marginLeftXS">›</p>
</a>
</div>
我想获得breadCrumb.nextOffer(...)
中的链接我试过这个:
import scrapy
from scrapy.contrib.linkextractors import LinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from autocrawler.items import AutocrawlerItem
class AutocrawlerRecursiveSpider(CrawlSpider):
name = 'autocrawler_recursive'
allowed_domains = ['autoscout24.de']
start_urls = ['http://ww3.autoscout24.de/classified/268348256asrc=pl|as&testvariant=articles_t20&tierlayer=pl']
rules = (
Rule(LinkExtractor(allow=(r'/^http:\/\/ww3.autoscout24.de\/classified\/\w+$/'), restrict_xpaths=('//*[@id="ng-app"]/div[2]/div/div[1]/div')), callback='parse_item', follow=True),
)
def parse_item(self, response):
item = AutocrawlerItem()
item['brand'] = response.xpath('//*[@id="detailsContent"]/div[1]/h1/text()').extract()
item['price'] = response.xpath('//*[@id="detailsContent"]/div[2]/div/div[2]/div/div[1]/text()').extract()
return item
但这只会刮掉start_url,似乎无法找到下一个链接。
我会非常感谢任何意见。 :)