driver.find_element_by_class_name()用发
时间: 2023-03-31 16:03:46 浏览: 146
这是一个关于编程的问题,我可以回答。driver.find_element_by_class_name() 是 Selenium WebDriver 中的一个方法,用于通过类名查找页面元素。具体用法可以参考相关文档或教程。
相关问题
优化这段代码 import parsel import requests from time import sleep from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Firefox() driver.get('https://www.amazon.de/') word = input('请输入你需要的关键词:') driver.find_element(by=By.NAME, value="field-keywords").send_keys(word) sleep(5) driver.find_element(By.XPATH, "//input[@type='submit']").click() # 利用相对路径+属性值 driver.find_element(By.ID, "nav-search-submit-button").click() url = 'https://www.amazon.de/s?k={}'.format(word) headers = { 'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0', 'Referer': 'https://www.amazon.de/' } res = requests.get(url=url, headers=headers) html_data = res.text for links in driver.find_elements(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style ' 'a-text-normal"]'): time.sleep(1) print(links.get_attribute('href')) a = [] for links in driver.find_elements(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style ' 'a-text-normal"]'): time.sleep(1) print(links.get_attribute('href')) a.append(links.get_attribute('href')) driver.find_element(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style ' 'a-text-normal"]').click() driver.find_element(By.ID, "sellerProfileTriggerId").click() box = driver.find_element(By.XPATH, "/html/body/div[1]/div[2]/div/div/div/div/div[9]/div/div/div").text print(box) driver.back() driver.back() driver.refresh() for i in adriver.find_element(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style ' 'a-text-normal"]').click(): print(i)
这段代码是利用Python的库来实现网页自动化操作的。其中使用了selenium来模拟用户的行为,打开Firefox浏览器并访问亚马逊德国的主页。然后根据输入的关键词,在搜索框中输入关键词,并点击“搜索”按钮,最后等待5秒钟。可以进一步优化代码,比如使用隐式等待来避免等待时间的硬编码,或者使用元素等待来确保页面加载完成后再进行后续操作等。
用class_name的话,为什么我的代码number不会变?for number in range(1,120): allfilmxpath = f'//*[@id="app"]/div/div[2]/ul/li[{number}]/a' filmname = driver.find_element(By.CLASS_NAME,'drc-subject-info-title-text') score = driver.find_element(By.CLASS_NAME,'drc-rating-num') print(filmname.text) print(score.text)
在您的代码中,虽然使用了 `range(1, 120)` 来遍历 1 到 119 的所有整数,但是在循环内部,您每次都是使用相同的 XPATH 来查找电影名称和评分,这就导致了您无法获取到不同电影的名称和评分。
您需要在每次循环内部使用新的 XPATH 来查找电影名称和评分,可以根据当前的 number 值来构造新的 XPATH。以下是修改后的代码:
```
for number in range(1, 121):
allfilmxpath = f'//*[@id="app"]/div/div[2]/ul/li[{number}]/a'
film_element = driver.find_element(By.XPATH, allfilmxpath)
film_element.click()
filmname = driver.find_element(By.CLASS_NAME, 'drc-subject-info-title-text')
score = driver.find_element(By.CLASS_NAME, 'drc-rating-num')
print(filmname.text)
print(score.text)
driver.back()
```
在这个修改后的代码中,我们使用当前的 number 值来构造新的 XPATH,然后在每次循环内部使用新的 XPATH 来查找电影名称和评分。
阅读全文