【发布时间】:2014-02-18 15:08:46
【问题描述】:
我想使用 scrapy 从这个表中提取一些书籍链接。
表格如下所示:
<table id="table_text">
<tbody>
<tr >
<td>15/02/2014</td>
<td><a href="/book_1.html">Book 1</a></td>
<td>The Author</td>
<td> <a href="/tag1">tag1</a> <a href="/tag2">tag2</a> </td>
<td>Genre</td>
</tr>
提取的链接应该是:
/book_1.html
我使用的选择器是
def parse(self, response):
hxs = Selector(response)
hxs = Selector(response)
links = hxs.xpath('//table[@id="table_text"]//tr//td[2]//a//@href')
但print links 显示一个空输出:[]
我想知道我使用的xpath 有什么问题?
【问题讨论】:
-
一个完整的复制器(也就是说,我们可以自己运行来复制的东西)会更有帮助。该页面是否公开可用?
-
顺便说一句,您使用的
//s 比您需要的要多得多。其中许多只会是单跳。 -
您可以使用
//table[@id="table_text"]//tr/td[2]/a/@href进行简化,但根据您所描述的,XPath 可以正常工作。你能提供更多的上下文吗?更多 HTML?您是否检查了response中的正文 is 实际上是您认为的那个(浏览器可以显示与 scrapy 检索的 HTML 不同的 HTML,例如,因为 JS)? -
@Robin 谢谢,我检查了
response.body,由于 JS,HTML 代码与 Firefox 或 Chrome 提供的不同 :-) 该表是用new Array()而不是 HTML 构建的。 -
很高兴我能提供帮助,我会将评论作为答案发布以供将来参考。
标签: python xpath web-scraping scrapy scrape