python - 如何遍历 Excel 工作表以在网页上执行搜索 Python Selenium
问题描述
我想遍历公司列表以逐一搜索并保存href。
from selenium.webdriver import Firefox
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd
import pandas as pd
from lxml import html
import time
import requests
df=pd.read_excel('/Users/ap/companies.xlsx')
browser = Firefox(options=opts)
browser.get('https://webpage')
search_form=browser.find_element_by_id('ctl00_ContentPlaceHolder1_frmEntityName')
i=0
for i in df['company_name']:
search_form.send_keys(i)
search_form_buttom=browser.find_element_by_id('ctl00_ContentPlaceHolder1_btnSubmit').click()
#wait a bit to make this element work.search_form.send_keys('BioHealth')
time.sleep(15)
i=i+1
我收到以下错误,我无法解决它,甚至无法抓取hrefs。
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-68-e157420a273e> in <module>()
21 #wait a bit to make this element work.search_form.send_keys('BioHealth')
22 time.sleep(10)
---> 23 i=i+1
24
TypeError: coercing to Unicode: need string or buffer, int found
解决方案
for 循环将找到的字符串分配df['company_name']
给它的变量i
。在循环结束时,您添加1
到此字符串,这是不允许的,因为 python 解释器不能将 int 隐式转换为字符串。
我有一种感觉,您正在尝试将i=i+1
用作循环计数器变量,但这在 for-each-loop (即for i in foo
)中不需要。把那个删掉就行了i=i+1
。循环仍将按预期运行。
但是,如果你真的想给存储在 中的字符串加 1 i
,你必须这样写:
i=i+str(1)
然后 python 解释器会接受它。
推荐阅读
- javascript - 有没有办法检查用户是否正在流式传输并显示它?
- python - 在python中将原始二进制数据转换为无符号整数
- python - 如何显示产品的 Django 其他嵌套评论?
- json - cts:near-query Marklogic on json 文档
- android - 为什么异步任务发送不明确的文件名?
- vue.js - 当我收到 vue_1.ref 不是函数错误时,如何使用 uve-recaptcha-v3 将 Recaptcha v3 与 VueJS 一起使用?
- python - 在python中解析错误时出现意外的EOF
- android - 从任何保留 backstack 的地方转到特定片段
- python - 有没有办法在执行时取消 Airflow dag 运行?
- python - setup.py:“描述”中的换行符