美好的一天,我是 Python 和 Selenium 的新手,并且已经搜索了一段时间的解决方案。虽然有些答案很接近,但我找不到可以解决我的问题的答案。我的代码片段是一个小问题,如下所示:
for url in links:
driver.get(url)
company = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[2]/ul/li/div/div[1]/span""")
date = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[1]/div[2]/div/span""")
title = driver.find_elements_by_xpath("""//*[@id="page-title"]/span""")
urlinf = driver.current_url #url info
num_page_items = len(date)
for i in range(num_page_items):
df = df.append({'Company': company[i].text, 'Date': date[i].text, 'Title': title[i].text, 'URL': urlinf[i]}, ignore_index=True)
如果所有元素都存在(并且我可以看到 Pandas 数据帧的输出),这确实有效,但如果其中一个元素不存在(“日期”或“标题”),Python 会发出错误:
IndexError:列表索引超出范围
到目前为止我尝试过的:
1) 创建了一个 try/except (不起作用) 2) 尝试了 if/else (如果变量不是 "")
如果元素不存在,我想插入“Null”,以便在元素不存在的情况下用“Null”填充 Pandas 数据框。
任何帮助和指导将不胜感激。
编辑 1:
我尝试了以下方法:
for url in links:
driver.get(url)
try:
company = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[2]/ul/li/div/div[1]/span""")
date = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[1]/div[2]/div/span""")
title = driver.find_elements_by_xpath("""//*[@id="page-title"]/span""")
urlinf = driver.current_url #url info
except:
pass
num_page_items = len(date)
for i in range(num_page_items):
df = df.append({'Company': company[i].text, 'Date': date[i].text, 'Title': title[i].text, 'URL': urlinf[i]}, ignore_index=True)
在追加到 Pandas 时,我尝试了相同的尝试/除外。
编辑 2 我得到的错误:
IndexError:列表索引超出范围
归因于该行:
df = df.append({'Company': company[i].text, 'Date': date[i].text, 'Title': title[i].text, 'URL': urlinf[i]}, ignore_index=True)
一只甜甜圈
相关分类