Bha*_*ara 2 python selenium web-scraping
我想使用硒从文本框中复制所有值。到目前为止我的代码看起来像
# -*- coding: UTF-8 -*
from selenium import webdriver #open webdriver for specific browser
import requests
import time
def getListZip(zip,radius):
browser = webdriver.Chrome()
browser.get("https://www.freemaptools.com/find-zip-codes-inside-radius.htm")
time.sleep(10)
user = browser.find_element_by_css_selector("#tb_radiuskm")
user.clear()
user.send_keys(radius)
user = browser.find_element_by_css_selector("#goto")
user.clear()
user.send_keys(zip)
time.sleep(10)
drawRadius = browser.find_element_by_css_selector("#contenttext > center:nth-child(8) > input:nth-child(1)")
drawRadius.click()
time.sleep(10)
listZip= browser.find_element_by_xpath('//*[@id="tb_output"]').text
return listZip
def main():
zip = getListZip(43212,25)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
这应该返回近 70 个值,但它返回 null。该程序将以邮政编码和半径形式提供输入,并将获得特定半径内所有邮政编码的输出。
我正在使用 python 3.x
您定位的元素是 TEXTAREA。.text获取元素的开始标签和结束标签之间的文本,例如<div>.text gets this text<div>。TEXTAREA 元素将其文本保存在value属性内。你可以使用这个
listZip = browser.find_element_by_css_selector("#tb_output").get_attribute("value")
Run Code Online (Sandbox Code Playgroud)
我在这里更改了定位器,因为您不需要 XPath。CSS 选择器或按 ID 更快。
奖金:
drawRadius您可以使用以下内容清理您的选择器。它比nth-child等更具体。
drawRadius = browser.find_element_by_css_selector("input[value='Draw Radius']")
Run Code Online (Sandbox Code Playgroud)