Py学习  »  Python

使用python-anydrop进行Selenium web抓取

codeisfun1234 • 6 年前 • 2072 次点击  

我想知道如何通过所有的下拉列表,得到价格和变化名称。我可以通过name属性来实现这一点,但是不同的产品页面有不同的属性,所以这不是最佳实践。我使用select by element id完成了这段代码,但收到了下面的错误。我也在试图找出如何复制到csv的这一点,但似乎没有工作。

import csv
browser = webdriver.Chrome(executable_path='C:\Users\userman\PycharmProjects\seleniumTest\drivers\chromedriver.exe')
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium.webdriver.support.select import Select



from selenium import webdriver
import csv
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select

from selenium.webdriver.support.select import Select
from selenium.webdriver.support.select import Select
from selenium.webdriver import Chrome

import itertools
from pprint import pformat

url = "https://www.ebay.co.uk/itm/Pashmina-Scarf-100-Viscose-Plain-Wrap-Shawl-Stole-Scarf-Many-Colours-Available/252342060680"

browser.get(url)
optionones = len(browser.find_elements_by_xpath("//select[@id='msku-sel-1']/option"))
for colNum in range(optionones):
    #select color
    optiononeEle = browser.find_element_by_xpath("(//select[id='msku-sel-1']/option)[" + str(colNum+1) + "]")
    optionone = optiononeEle.text
    optiononeEle.click()

    # get the sizes
    sizes = len(browser.find_elements_by_xpath("//select[id='msku-sel-2']/option"))
    for sizeNum in range(sizes):
        # select optionone
        optiontwoEle = browser.find_element_by_xpath("(//select[id='msku-sel-2']/option)[" + str(sizeNum + 1) + "]")
        size = optiontwoEle.text
        optiontwoEle.click()
        price = browser.find_element_by_xpath("//span[@id='prcIsum']").text
        print ("optionone:" + optionone)
        print( "optiontwoEle:" + optiontwoEle)
        print("Price: "+ price)
        print ("----------------------------------------")

Traceback (most recent call last):
  File "C:/Users/userman/PycharmProjects/seleniumTest/test/test310.py", line 30, in <module>
    optiononeEle = browser.find_element_by_xpath("(//select[id='msku-sel-1']/option)[" + str(colNum+1) + "]")
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 394, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 978, in find_element
    'value': value})['value']
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"(//select[id='msku-sel-1']/option)[1]"}

Process finished with exit code 1

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/53466
文章 [ 1 ]  |  最新文章 6 年前