use*_*794 4 python scrapy python-2.7
我正在使用scrapy来抓一个网站.我想选择id为"result_%s"形式的所有元素,其中%s是任何整数.
sites.select('//*[@id="result_1"]')
Run Code Online (Sandbox Code Playgroud)
如何实现
在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教程是一个很好的资源.