首页 > 解决方案 > 如何遍历 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 

标签: pythonseleniumloopsiteration

解决方案


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 解释器会接受它。


推荐阅读