【发布时间】:2017-08-08 17:31:26
【问题描述】:
我在 python 中结合 selenium 编写了一个脚本,以根据“街道号码”和“地址”执行反向搜索从网站中查找名称。它适用于单次搜索。首先,脚本应从“search_post”列表中选择“A1”并将其放入浏览器的“街道搜索框”,然后应从“search_address”中选择“B1” ”列表将其放入浏览器的“地址搜索框”中。我的脚本适用于第一次搜索,但是当第一个循环用于第二个项目时,它再次使用 A1 而不是 A2,第二个循环选择正确的项目,在这种情况下是 B2。更具体地说,第一次需要 A1,B1,但第二次需要 A1,B2 代替 A2,B2。我怎样才能修复这个循环,以便它并行选择项目。
A1. 8227 B1. FINDLAY ST
A2. 6330 B2. LAUTREC DR
这是脚本:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
search_post = ['8227','6330 ']
search_address = ['FINDLAY ST','LAUTREC DR']
driver = webdriver.Chrome()
driver.get("http://hcad.org/quick-search/")
wait = WebDriverWait(driver, 10)
for item in search_post:
for elem in search_address:
driver.switch_to_frame(driver.find_element_by_tag_name("iframe"))
driver.find_element_by_id("s_addr").click()
wait.until(EC.presence_of_element_located((By.NAME, 'stnum')))
driver.find_element_by_name('stnum').send_keys(item)
driver.find_element_by_name('stname').send_keys(elem)
driver.find_element_by_xpath("//input[@value='Search']").click()
driver.switch_to.frame(driver.find_element_by_id("quickframe"))
element = driver.find_element_by_xpath("//td[@class='data']/table//th")
print(driver.execute_script("return arguments[0].childNodes[2].textContent", element).strip())
driver.quit()
【问题讨论】:
-
将你的文本分成几段可以让你的问题更容易理解。
-
请原谅我的语言困难。
标签: python python-3.x selenium selenium-webdriver web-scraping