【发布时间】:2019-04-27 17:20:12
【问题描述】:
早安,
我是 Python 和 Selenium 的新手,需要帮助解决以下问题:
我的一个sn-p代码如下:
num_page_items = len(date)
blank = "0"
try:
with open('results.csv', 'a') as f:
for i in range(num_page_items):
f.write(name[i].text + "#" + surname[i].text + "#" + ref[i].text + "#" + url[i].text + "\n")
except IndexError:
with open('results.csv', 'a') as f:
f.write(blank)
我有一些变量正在使用 selenium 抓取网站。 数据示例和预期输出如下:
姓名:Joe 姓氏:Soap Ref:1234 URL:www.example.com
姓名:Bill 姓氏:Smith Ref:4567 URL:www.dot.com
当所有元素都存在时,Python 脚本运行良好,但是当一个元素(在示例中:第二个条目中不存在 Ref)不存在时,输出如下
output when an element doesn't exist
如果网页上不存在该变量,我该怎么做才能将变量设置为“Null”,因此预期的新输出如下:
expected output when element doesn't exist
顺便说一句,我收到的错误不是 Selenium 异常, 但是是一个IndexError,因此使用“IndexError”除了 声明
编辑 - Felipe Gutierrez 的建议
Felipe 建议的大段代码:
for url in links:
driver.get(url) #goes to the array and opens each link
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""")
ref = driver.find_elements_by_xpath("""//*[contains(@id, 'node')]/div[1]/div[3]""")
title = driver.find_elements_by_xpath("""//*[@id="page-title"]/span""")
urlinf = driver.current_url
num_page_items = len(date)
blank = "blank"
for ref in ref:
if ref is None:
ref = 0
with open('results.csv', 'a') as f:
for i in range(num_page_items):
f.write(company[i].text + "#" + date[i].text + "#" + ref[i].text + "#" + title[i].text + "#" + urlinf + "\n")
driver.close()
我现在收到以下错误:
Traceback(最近一次调用最后一次):文件“accc_for_loop_nest.py”, 第 50 行,在 f.write(company[i].text + "#" + date[i].text + "#" + ref[i].text + "#" + title[i].text + "#" + urlinf + "\n") 类型错误:'WebElement' 对象不支持索引
【问题讨论】:
-
你真的应该考虑使用 csv 模块(这就是它的用途),
-
谢谢。您能否提供一个适合我想要实现的示例
标签: python selenium web-scraping index-error