链接提取器无法获得超出特定路径的路径

时间:2018-01-27 15:43:36

标签: scrapy scrapy-spider

我需要一些关于Scrapy的帮助和指导。 我的Start_Url是:: http://lighting.philips.co.uk/prof/ 已粘贴我的代码,可以获取链接/路径,直到下面的网址。但不要超越那个。我需要转到每个产品的页面,列在下面的路径中。在“productsinfamily”页面中列出了特定的产品(可能在java脚本中)。我的Crawler无法访问这些单独的产品页面。

http://www.lighting.philips.co.uk/prof/led-lamps-and-tubes/led-lamps/corepro-ledbulb/productsinfamily/

以下是抓取蜘蛛的代码 -

import scrapy
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor


class ProductSearchSpider(CrawlSpider):
    name = "product_search"
    allowed_domains = ["lighting.philips.co.uk"]
    start_urls = ['http://lighting.philips.co.uk/prof/']

    rules = (Rule(LinkExtractor(allow=
     (r'^https?://www.lighting.philips.co.uk/prof/led-lamps-and-tubes/.*', ),), 
     callback='parse_page', follow=True),)


    def parse_page(self, response):
        yield{'URL' : response.url}

1 个答案:

答案 0 :(得分:0)

你是对的,链接是用javascript定义的。

如果您查看html源代码,在第3790行,您可以看到创建了一个名为d75products的变量。这稍后用于填充模板并显示产品。

我接近这个的方法是从源中提取这些数据并使用json模块加载它。获得数据后,无论您想要什么,都可以使用它。

另一种方法是使用某些东西(例如浏览器)来执行javascript,然后解析生成的html。我认为这是不必要的,而且过于复杂。