如何抓取ibbi.gov.in站点表格内的PDF链接及其他关联业务数据
问题原因及修复方案
你当前代码无法获取PDF链接的核心问题有两点:
- 你直接打印、存储的是Selenium的WebElement对象,没有提取链接对应的
href属性值 - 分开遍历不同列的元素容易出现行数不匹配的问题,部分行如果没有PDF链接会导致列表顺序错位
稳定优化版代码方案
建议直接按表格行遍历,逐行提取对应字段,可避免行数据错位问题,同时兼容部分行无PDF链接的场景:
# 先获取所有表格行元素 rows = driver.find_elements_by_xpath('/html/body/div[5]/div/div/div/div/div/div/div/div[2]/table/tbody/tr') Name_ = [] Date_ = [] EventType_ = [] EvidenceLink_ = [] for row in rows: # 逐行提取对应字段内容 company_name = row.find_element_by_xpath('./td[4]').text date = row.find_element_by_xpath('./td[2]').text event_type = row.find_element_by_xpath('./td[1]').text # 提取PDF链接,捕获无链接的异常避免程序中断 try: evidence_link = row.find_element_by_xpath('./td[7]/a').get_attribute('href') except: evidence_link = '' # 存入对应列表 Name_.append(company_name) Date_.append(date) EventType_.append(event_type) EvidenceLink_.append(evidence_link) # 可打印验证输出结果 print(company_name, date, event_type, evidence_link)
现有代码最小改动方案
如果你不想调整原有代码结构,只需要修改最后遍历EvidenceLink的部分即可:
for i in range(len(EvidenceLink)): # 提取a标签的href属性获取真实PDF链接 pdf_url = EvidenceLink[i].get_attribute('href') print(pdf_url) EvidenceLink_.append(pdf_url)
内容的提问来源于stack exchange,提问作者AshishTalgotra
相关产品推荐
相关产品推荐

