我有以下源代码,我试图从中提取所需的信息:
<div id="PaginationBottom" class="pagination">
<a href="#" data-page="2" title="page 2 of 31" >2</a>
<a href="#" data-page="3" title="page 3 of 31" >3</a>
<a href="#" data-page="4" title="page 4 of 31" >4</a>
<a href="#" data-page="10" title="page 10 of 31" >10</a>
<a href="#" data-page="2" title="page 2 of 31" class="next" >next »</a>
</div>
我想要提取的是最终标记本身的 中的title="page 2 of 31"
信息 。我可以使用以下代码获取标记:
response.xpath('//div[@id="PaginationBottom"]//a[@class="next"]').extract()
因此,我想知道的是,是否可以从标签本身中提取参数的文本。是吗?我无法在任何地方找到相关信息,但我是xpath的新手,并不知道最好的搜索字词。谢谢你的帮助!
答案 0 :(得分:2)
将/@title
添加到xpath表达式的末尾:
//div[@id="PaginationBottom"]//a[@class="next"]/@title
来自scrapy shell
:
>>> response.xpath('//div[@id="PaginationBottom"]//a[@class="next"]/@title').extract()
[u'page 2 of 31']
只是跟进。您可能希望从title
中获取31
属性值page 2 of 31
中的最大页数。 Scrapy Selector的内置re()
方法在这里会有所帮助:
>>> response.xpath('//div[@id="PaginationBottom"]/a[@class="next"]/@title').re('page \d+ of (\d+)')
[u'31']
答案 1 :(得分:0)
尝试这样一个简单的:( htmltext是你要解析的文本)
regex1 = '<a href="#" data-page="2"(.+?)>2</a>'
pattern1 = re.compile(regex1)
Extracted_Text = re.findall(pattern1,htmltext)
print Extracted_Text
此代码提取<a href="#" data-page="2"
和>2</a>
之间的所有内容
输出如下:
title =&#34;第2页,共31页&#34;所以...