所以,我的问题是,当我提取数据时,页面上有几个条目,因为没有与它们相关联的链接,它们不会被选中:
为了更好地解释,hxs.select
语句几乎可以获取所有数据:
opening = hxs.select('//div[@id="body"]/div/table/tr/td/table/tr[2]/td/table[2]/tr/td[7]/font/a/text()').extract()
此声明只有3个开场电影日期。正如我所提到的,这三个缺失的日期没有与它们相关联的链接,实际上可以在以下位置找到:
hxs.select('//div[@id="body"]/div/table/tr/td/table/tr[2]/td/table[2]/tr/td[7]/font/text()').extract()
*注意:最后没有找到/a
。
我只想添加一个额外的声明来获取这些,但我需要按顺序提供所有信息。我也有声明获得电影名称和收入金额。然后我接受这些语句并迭代它们以将它们与它们所属的位置配对 - 如果我添加另一个语句来单独处理它们,我就不能这样做。有什么建议吗?
::::数据::::: 以下是我想要获取的数据的网址BoxOfficeMojo
快速说明:如果您使用Firebug查看xpath,它会添加tbody
,它实际上并不存在(它会将其添加)。
以下是正常开放日期:
<td bgcolor="#ffffff" align="right">
<font size="2">
<a href="/schedule/?view=bydate&release=theatrical&date=2010-06-11&p=.htm">6/11/2010</a>
</font>
</td>
以下是“问题”开放日期之一:
<td bgcolor="#f4f4ff" align="right">
<font size="2">11/20/1981</font>
</td>
答案 0 :(得分:1)
只需使用后代或自轴步骤<font/>
选择该//
元素中的所有文本节点。
//div[@id="body"]/div/table/tr/td/table/tr[2]/td/table[2]/tr/td[7]/font//text()