python - 使用 Scrapy 解析日程表
问题描述
我需要从计划中解析项目,将它们的日期和时间存储在项目中。想象一下日历中的周视图:
| Mon | Tue | Wed | Thr |
------------------------------------------
8am | Event1 | Event2 | | Event3 |
9am | | Event4 | Event5 | |
10am | | | | |
11am | Event6 | | | |
理想的项目如下所示:
{
'name': 'Event4',
'day': 'Tue',
'time': '9am',
}
HTML 结构是通常的表结构,带有<tr>
和<td>
(和<th>
用于标题)。注意:该表也可能非常稀疏。
我最好的想法是利用固定数量的列,然后逐行迭代,逐列手动列出.css('td:nth-child(1)')
等。这非常难看,而且由于我是 Scrapy 的新手,我真的觉得我做错了。
对此有什么明智的解决方案?
解决方案
您可以获得列标题:
headers = response.xpath('//table//th/text()').getall()
接下来迭代每一行:
for row in response.xpath('//table//tr[position() > 1]'):
index = 0
for td_value in row.xpath('./td/text()').getall():
column_name = headers[index]
index += 1
推荐阅读
- jquery - jquery.filedrop.js - 初始化后如何更改选项?
- javascript - 为 Meteor twbs:bootstrap 指定一个 jQuery 版本
- documentation - Kubernetes 文档搜索无法正常工作
- vue.js - Vue js嵌入组件的执行方法
- linux - 汇编中单独的 64 位寄存器有什么作用?
- java - Java JDBC SQL 将一个表重写为另一个
- sql - SQL Server BULK INSERT 出错并且没有释放 Sch-M 锁,表不可访问
- python - 我可以让 tensorflow-gpu 与 NVIDIA GeForce MX130 一起工作吗?
- web-crawler - 如何限制stormcrawler中的爬行深度
- python-3.x - Python无法以批处理语言打印变量