python - 使用 python 和 selenium 抓取 ebay 下拉文本
问题描述
我正在尝试在 ebay 上输出所选下拉选项的文本。我想输出文本,然后输出项目的价格(最终),因为选择了不同的下拉选项(这就是为什么我不想一次抓取下拉值列表的原因)。我试过这段代码:
from selenium import webdriver
import csv
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
browser = webdriver.Chrome(executable_path='C:\Users\user\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
browser.get('https://www.ebay.co.uk/itm/Wooden-Box-Coins-Coin-Capsules-Display-Storage-Case-for-Collectible-50-100-New/392274824564')
posts = browser.find_element_by_xpath("//select[@id='msku-sel-1']").send_keys(Keys.DOWN) // this just selects the option after select
for post in posts:
print(post.text)
如果能提供一些帮助将不胜感激!
但是,我在控制台中收到了这个错误。
C:\Python27\python.exe C:/Users/user/PycharmProjects/seleniumTest/test/test310.py
Traceback (most recent call last):
File "C:/Users/user/PycharmProjects/seleniumTest/test/test310.py", line 18, in <module>
for post in posts:
TypeError: 'NoneType' object is not iterable
解决方案
你可以Select
在硒中上课。
from selenium.webdriver.support.select import Select
sel = Select(driver.find_element_by_xpath("//select[@id='msku-sel-1']"))
for index in range(1, len(sel.options)):
# skipping index 0 because it is not valid option
sel.select_by_index(index)
print("{}: {}".format(sel.first_selected_option.text, browser.find_element_by_xpath("//span[@id='prcIsum']").text))
上面的代码应该给出如下输出:
S: £6.35
L: £10.25
推荐阅读
- node.js - 直接从 IntelliJ 运行 Jest describe.each 或 it.each 测试?
- linux - hwloc + lstopo 无法在 Open-MPI 的双 CPU 机器上生成拓扑
- java - Android Java,如何获取类属性的值?
- mysql - MySQL做嵌套JSON值的总和
- c# - SignalR Redis 背板实现
- time - Spark AR 无法设置计时器
- html - 在导航栏下方打开模态
- android - Galaxy S9 未使用适当的可绘制资源
- php - 如何从 Laravel 5.8 的存储中访问文件
- windows-10 - 在 Windows 10 上使用 Hyper-v 启动 Minishift 失败并出现 E0113