Scrapy:从使用" id"的html标签中提取数据选择器而不是"类"

时间:2017-07-25 20:41:10

标签: web-scraping scrapy

我是网络抓取和Scrapy的新手。我希望你能帮助我。

我正在尝试从使用标记的网页中提取数据。通常,如果span标记使用的是类,例如:

<span class="class_A>Hello, World!</span>

我会使用以下代码来检索文本。

request.css('span.class_A::text').extract()

然而,当html现在使用&#34; id&#34;而不是&#34;类&#34;,例如,

<span id="id_A>Hello, Universe!</span>

以下代码不再有效。

request.css('span.id_A::text').extract()

请帮忙!使用&#34; id&#34;

提取数据的正确方法是什么

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

这是一种方式。

>>> HTML = '''
... <span id="id_A">Hello, Earth</span>
... <span id="id_B">Hello, Universe</span>
... '''
>>> from scrapy.selector import Selector
>>> selector = Selector(text=HTML)
>>> selector.css('[id="id_A"]::text').extract()
['Hello, Earth']

可替换地,

>>> HTML = '''
... <span id="id_A">Hello, Earth</span>
... <span id="id_B">Hello, Universe</span>
... '''
>>> from scrapy.selector import Selector
>>> selector = Selector(text=HTML)
>>> selector.css('span#id_A::text').extract()
['Hello, Earth']

Scrapy使用cssselect

后面的W3 Selectors Level 3

答案 1 :(得分:3)

问题是你正在使用&#34;类选择器&#34; (请查看this以获取参考)。你应该使用&#34; id选择器&#34;,这应该有效:

response.css('#id_A::text').extract()