6

我是 Scrapy 的新手,我想做的是制作一个爬虫,它只会跟随给定的 HTML 元素内的链接start_urls

举个例子,我只想让爬虫通过start_urls设置为https://www.airbnb.com/s?location=New+York%2C+NY&checkin=&checkout=&guests=1的 AirBnB 列表

我不想抓取 URL 中的所有链接,我只想抓取 xpath 中的链接//*[@id="results"]

目前我正在使用以下代码来抓取所有链接,我怎样才能让它只抓取//*[@id="results"]

    from scrapy.selector import HtmlXPathSelector
    from tutorial.items import DmozItem
    from scrapy.contrib.spiders import CrawlSpider, Rule
    from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
    from scrapy.selector import HtmlXPathSelector


    class BSpider(CrawlSpider):
            name = "bt"
            #follow = True
            allowed_domains = ["mydomain.com"]
            start_urls = ["http://myurl.com/path"]
            rules =(Rule(SgmlLinkExtractor(allow = ()) ,callback = 'parse_item', follow=True),)


        def parse_item(self, response):
        {parse code}

任何正确方向的提示将不胜感激,谢谢!

4

1 回答 1

8

您可以将restrict_xpaths 关键字参数传递给SgmlLinkExtractor。从文档

  • restrict_xpaths (str or list) – 是一个 XPath(或 XPath 的列表),它定义了响应中应该从中提取链接的区域。如果给定,则仅扫描由这些 XPath 选择的文本以查找链接。
于 2012-12-25T09:57:02.163 回答