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に渡すことができます。ドキュメントから:

  • strict_xpaths(strまたはlist)– XPath(またはXPathのリスト)であり、リンクを抽出する必要がある応答内の領域を定義します。指定した場合、それらのXPathによって選択されたテキストのみがリンクをスキャンされます。
于 2012-12-25T09:57:02.163 に答える