【问题标题】:Scrapy : getting only td elements with ALIGN=RIGHTScrapy:仅获取 ALIGN=RIGHT 的 td 元素
【发布时间】:2013-05-08 12:24:24
【问题描述】:

我正在使用scrapy从这个网站上抓取数据:http://www.nuforc.org/webreports/ndxevent.html

我需要将日期与 UFO 目击次数分开,是的,令人兴奋!

这是我正在抓取的示例

<TR VALIGN=TOP> <TD><FONT style=FONT-SIZE:11pt FACE="Calibri" COLOR=#000000><A HREF= ndxe201303.html>03/2013</A></TD> <TD ALIGN=RIGHT><FONT style=FONT-SIZE:11pt FACE="Calibri" COLOR=#000000>108</TD>

所以在本例中,日期 = 03/2013,计数 = 108

现在日期不是问题,因为我可以做到

hxs.select('//tbody//td//font//a//text()').extract()

获取“a”标签内的文本。

但是有没有办法从具有 ALIGN=RIGHT 样式的 td 元素中获取文本。 我查看了文档和选择器,但我很困惑

hxs.select('//tbody[contains(td, "ALIGN")]').extract()

?

【问题讨论】:

    标签: python web-crawler scrapy


    【解决方案1】:

    这会从所有&lt;td&gt; 中选择具有属性 ALIGN="RIGHT" 的文本:

    hxs.select('//tbody//td[@ALIGN="RIGHT"]//text()').extract()
    

    【讨论】:

    • 出于某种奇怪的原因,我需要两个'/',所以如果我这样写,你的行就可以工作:hxs.select('//tbody//td[contains(@align, "RIGHT" )]//text()').extract() -- 非常感谢 :D
    • /text() 匹配紧跟在结束标记 &lt;/td&gt; 之后的文本。 //text() 匹配 &lt;td&gt;..&lt;/td&gt; 内所有子标签的所有文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    • 2021-07-06
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多