Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用scrapy递归刮取面包屑链接_Python_Scrapy_Breadcrumbs - Fatal编程技术网

Python 使用scrapy递归刮取面包屑链接

Python 使用scrapy递归刮取面包屑链接,python,scrapy,breadcrumbs,Python,Scrapy,Breadcrumbs,我是python和scrapy的新手。对于一个大学项目,我需要在autoscout24.de域(德语)上刮取汽车分类广告 以下是一个示例站点: 我希望爬行蜘蛛递归地抓取“下一个提议”('nächstes Angebot'),但似乎无法从面包屑中提取链接。网站有趣的部分应该是: <div class="floatRight"> <span class="linkInvisible"> &

我是python和scrapy的新手。对于一个大学项目,我需要在autoscout24.de域(德语)上刮取汽车分类广告

以下是一个示例站点:

我希望爬行蜘蛛递归地抓取“下一个提议”('nächstes Angebot'),但似乎无法从面包屑中提取链接。网站有趣的部分应该是:

<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>
但这只会刮去起始url,似乎找不到下一个链接


我将非常感谢您的任何意见。:)

这里解决了一个类似的问题:基本上,您可以更新规则提取器以获取属性ng的值,然后单击并处理该值以在另一个函数中提取uerl。谢谢。这让我意识到问题在于scrapy不支持javascript生成的内容。
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