如何编写指定网页表格每行日期时间的通用XPath供Scrapy提取使用
表格全行列数据通用XPath编写方案
你给出的首行XPath中,tr[1]是用于限定匹配第一行<tr>标签的索引,去掉该索引限定即可得到匹配所有行第一列(日期时间列)的通用XPath:/html/body/div/div[2]/main/div[2]/div[3]/table/tbody/tr/td[1]
Scrapy 提取使用示例
在爬虫的parse回调方法中可按以下代码完成提取:
def parse(self, response): # 提取所有行的日期时间原始文本 raw_datetime_list = response.xpath('/html/body/div/div[2]/main/div[2]/div[3]/table/tbody/tr/td[1]/text()').getall() # 清洗数据 for raw_dt in raw_datetime_list: clean_dt = raw_dt.strip() if clean_dt: # 可在此处将数据存入item或做后续处理 yield { "datetime": clean_dt }
注意事项
- 如果运行时提取不到数据,大概率是浏览器调试工具自动插入了
<tbody>标签,实际服务端返回的页面源码中没有该节点,把XPath中的/tbody段删除即可,修改后路径为:/html/body/div/div[2]/main/div[2]/div[3]/table/tr/td[1] - 想要提升路径稳定性、避免上层页面结构微调导致提取失效,可优先使用带特征的相对路径,例如目标表格如果有
class="event-table"这类属性,可改写为//table[@class="event-table"]//tr/td[1]
内容的提问来源于stack exchange,提问作者Norhther
相关产品推荐
相关产品推荐

