我想使用 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
有什么问题吗?
根据您提供的信息,您的 XPath 工作正常。它可以简化为
//table[@id="table_text"]//tr/td[2]/a/@href
但是您的版本返回正确的节点。
当 scrapy 遇到意外行为时,请尝试始终检查它收到的 HTML 是否是您期望的 HTML。 使用浏览器和 scrapy 检索的 HTML 可能会有所不同,因为 scrapy 不处理 Javascript(并且某些浏览器会尝试清理 HTML)。
这就是为什么你应该检查response.body的内容是否是你所期望的。如果不是,您需要找到解决方法:)