python - 使用 selenium python 复制文本区域

标签 python selenium web-scraping

我想使用 Selenium 从文本框中复制所有值。到目前为止我的代码看起来像

# -*- 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()    

这应该返回近 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")

我在这里更改了定位器,因为您不需要 XPath。 CSS 选择器或按 ID 更快。

奖金:

您可以清理 drawRadius 的选择器通过使用以下内容。它比 nth-child 更具体等

drawRadius = browser.find_element_by_css_selector("input[value='Draw Radius']")

关于python - 使用 selenium python 复制文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40980559/

相关文章:

xpath - 如何使用xpath查询获取完整的类名?

python - opencv aruco estimatePoseSingleMarkers python

c# - Selenium Webdriver C#, Chrome, 图标隐藏元素且不可点击

testing - Selenium Test Runner 和变量问题

javascript - jasmine.matchersUtil.equals 与 ===

python - 为什么scrapy没有给出所有结果并且规则部分也不起作用?

web-scraping - Scrapy:抓取嵌套链接

python - write() 创建部分可读/损坏的文件

python - 如何动态地将属性添加到类中?

python - 将 xml 解析为 python 中的 pandas 数据框