【问题标题】:How To Scrape Values in Selenium Using Python?如何使用 Python 在 Selenium 中刮取值?
【发布时间】:2020-03-21 16:23:05
【问题描述】:

我正在尝试使用 css 选择器刮取选项标签中的值,但我不能:

我想抓取选项标签中的值属性,例如<option value='i want to scrape this'>text</option>

这是另一个屏幕截图,以便您更好地理解:

在选项标签中我想抓取值而不是文本

你可以看到这里是选项值截图:

我也想在这里抓取值:

这是我的代码:

cur = driver.find_elements_by_css_selector('#id_currency')
country = driver.find_elements_by_css_selector('search-form-place-country')
items = len(cur)

with open('cur.csv','w') as s:
    for i in range(items):
        s.write(cur[i].text + ',' + country[i].text + '\n')

任何帮助将不胜感激

谢谢!

【问题讨论】:

  • 你想得到什么值?
  • 在选项标签中我不想废弃值属性
  • 您要获取国家/地区名称吗?
  • 问题已更新!

标签: python selenium web-scraping css-selectors selenium-chromedriver


【解决方案1】:

使用Select 类,它专门用于<select> 下拉菜单

from selenium.webdriver.support.select import Select

dropDown = driver.find_element_by_id('search-form-place-country')
select = Select(dropDown)
with open('cur.csv','w') as s:
    for option in select.options:
        s.write(option.get_attribute('value') + '\n')

【讨论】:

    【解决方案2】:

    要使用 提取<option> 标记中的,您可以使用以下Locator Strategy

    from selenium import webdriver
    from selenium.webdriver.support.ui import Select
    
    select_places = Select(driver.find_element_by_css_selector("select.search-form-place.select.form-control"))
    for option in select_places.options:
        print(option.get_attribute("value"))  
    

    【讨论】:

    • 遇到错误Traceback (most recent call last): File "cur.py", line 11, in <module> select_places = Select(driver.find_element_by_css_selector("select.search-fo rm-place.select.form-control")) NameError: name 'Select' is not defined
    • @HamzaMirchi 添加了导入,检查更新的答案并让我知道状态。
    【解决方案3】:

    只需根据选项标签选择它们。

    country= driver.find_elements_by_css_selector('option')

    新的 for 循环:

        for i in range(items):
            s.write(cur[i].text + ',' + country[i].get_attribute["value"] + '\n')
    
    

    【讨论】:

    • 不,我不想要整个选项标签,我想要选项标签,在里面我想废弃值属性
    • 我想废弃option标签中的values属性,例如<option value='i want to scrap this'>text</option>
    • 然后只需将 for 循环中的 .text 部分替换为 .getAttribute("value")
    • 抱歉语法是 get_attribute() 而不是 getAttribute()
    猜你喜欢
    • 2020-04-07
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多