python - 从抓取元素中提取日期和其他数据

标签 python algorithm xpath web-scraping lxml

我正在使用lxml,urllib和csv编写Python代码,以刮擦a Brazil government site中的语音。

我可以使用XPath找到每个演讲的标题和链接,但是找不到确切的日期,因为演讲日期之前没有特定的标签。

当我使用XPath '//span[@class="summary-view-icon"]/text()时,刮板会带回日期,小时和单词“Página”(葡萄牙语页面)。我知道这个Xpath是不正确的,但是我不知道如何只选择日期。

即使有这个错误,我也可以将报废的内容转换为列表,并进行编辑以删除除日期以外的所有内容。问题是最终清单(如您在下面看到的)还有其他一些我无法删除的字符。

这里似乎有两种解决方案:正确使用XPath或编辑列表中的其他字符。我该怎么办?

['\ n 18/12/2015 \ n','\ n 21/12/2015 \ n','\ n 21/12/2015 \ n','\ n 22/12/2015 \ n',' \ n 22/12/2015 \ n','\ n 22/12/2015 \ n','\ n 11/01/2016 \ n','\ n 19/01/2016 \ n','\ n 2016年1月21日\ n','\ n 26/01/2016 \ n','\ n 27/01/2016 \ n','\ n 27/01/2016 \ n','\ n 28/01/2016 \ n','\ n 01 / 02/2016 \ n','\ n 01/02/2016 \ n','\ n 02/02/2016 \ n','\ n 02/02/2016 \ n','\ n 02/02 / 2016 \ n','\ n 03/02/2016 \ n','\ n 03/02/2016 \ n','\ n 19/02/2016 \ n','\ n 19/02/2016 \ n','\ n 22 / 02/2016 \ n','\ n 26/02/2016 \ n','\ n 26/02/2016 \ n','\ n 02/03/2016 \ n','\ n 03/03 / 2016 \ n','\ n 04/03/2016 \ n','\ n 07/03/2016 \ n','\ n 04/02/2016 \ n','\ n 08/03/2016 \ n','\ n 09 / 03/2016 \ n','\ n 17/03/2016 \ n','\ n 18/03/2016 \ n','\ n 22/03/2016 \ n','\ n 23/03 / 2016 \ n','\ n 23/03/2016 \ n','\ n 30/03/2016 \ n','\ n 31/03/2016 \ n','\ n 01/04/2016 \ n']]

最佳答案

尝试使用followin XPath将结果缩小到仅日期:

//span[@class="summary-view-icon"][i/@class="icon-day"]/text()[normalize-space()]


上述XPath的最后一位(text()[normalize-space()])仅返回非空文本节点。从这里,您仍然需要使用strip()删除不必要的空格:

query = '//span[@class="summary-view-icon"][i/@class="icon-day"]/text()[normalize-space()]'
dates = root.xpath(query)
result = [date.strip() for date in dates]

关于python - 从抓取元素中提取日期和其他数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36415750/

相关文章:

algorithm - 诸如恒定质量(可变位)摘要哈希算法之类的东西?

Python FInd 过去 k 项中的最大数

javascript - 使用二维数组计算输赢

html - XPATH 获取所有没有 <script> 和 </script> 标签的标签

html - 在 XPath 中将货币与美元符号 ($) 和逗号 (,) 匹配

python - 如何获取Dev C++来查找Python.h

计算成员(member)价格的Python函数

python - Wagtail/Django block 无法从自定义/嵌套 StructBlock 模板正确呈现内容

java - Flink Python 自定义连接器/源代码

xml - 对一个 xml 文件进行排序并让另一个文件跟随