我试图取消美国证券交易委员会提交的数据财务报告。以下是示例表的链接:
if(<?=$_GET['email']?>=='sent'){alert('Thank you!')}
在target_page的源代码中,带有数字输出的表格单元格标有target_page = 'https://www.sec.gov/Archives/edgar/data/1564408/000156459017022434/R4.htm'
如果值为负,则将其写为<td class="num" ...> <a ..>somevalue</a></td>
(即绝对值包含在<td class="num" ...> <a ..>(somevalue)</a></td>
括号,而不是()
否定号。
我可以通过以下lxml / requests脚本轻松提取这些值:
-
我的问题:
由于某种原因,from lxlm.html import fromstring
import requests
page = requests.get(target_page)
tree = page.fromstring(page.content)
values = tree.xpath('//td[@class="nump"]/text()')
仅提取数字,而不返回任何tree.xpath('//td[@class="nump"]/text()')
个字符。在示例页面中,我将其中一个值链接为()
,但我的代码只会返回(461,827)
。
有什么方法可以解决这个问题吗?
答案 0 :(得分:0)
这是因为具有负值的单元格具有num
类,而不是nump
。你可以同时处理:
//td[@class="nump" or @class="num"]/text()
或者:
//td[starts-with(@class, "num")]/text()
并且,为了避免在输出中添加额外的换行符,请使用.text_content()
:
[cell.text_content().strip() for cell in tree.xpath('//td[@class="nump" or @class="num"]')]