在python scrapy中选择具有特定id patern的所有元素

use*_*794 4 python scrapy python-2.7

我正在使用scrapy来抓一个网站.我想选择id为"result_%s"形式的所有元素,其中%s是任何整数.

sites.select('//*[@id="result_1"]')
Run Code Online (Sandbox Code Playgroud)

如何实现

Scr*_*ice 6

在Scrapy中,从页面中提取信息的主要方式是使用Selectors.使用Scrapy选择器最流行的方法是使用Xpath表达式.

Xpath有一些方便的功能,其中之一就是contains().您可以在蜘蛛中使用它,如下所示:

from scrapy.spider import Spider
from scrapy.selector import Selector

class ExampleSpider(Spider):
    name = "exampleSpider"
    start_urls = ["http://example.com/sitemap.html"]

    def parse(self, response):
        sel = Selector(response)
        results = sel.xpath("//*[contains(@id, 'result_')]")
        for result in results:
            #do something with the results here
            print result.extract()
Run Code Online (Sandbox Code Playgroud)

它检查第二个参数是否是第一个参数的子字符串.

如果您想了解有关构建蜘蛛和从页面提取数据的更多信息,官方Scrapy教程是一个很好的资源.