别折磨了 2023-04-27 17:16 采纳率: 57.1%
浏览 10
已结题

遍历所有页面的链接,并保存在列表a中

#如何在以下代码中添加点击next按钮获取每一页链接,直到无法点击next或页面结束,将输出的所有链接保存到我的a[]中


```python
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"]'):
    sleep(1)

    print(links.get_attribute('href'))
    # a.append(links.get_attribute('href'))
# 等待10秒直到元素完善

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.s-search-results")))

# 获取搜索结果的链接
links = driver.find_elements(By.CSS_SELECTOR, 'a.a-link-normal.s-no-outline')
url_list = [link.get_attribute('href') for link in links]
for url in url_list:
    driver.get(url)
    try:
        # 等待页面加载完成
        WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "productTitle")))
        # 获取数据链接
        seller_link = driver.find_element(By.ID, "sellerProfileTriggerId").get_attribute('href')
        #点击滑动元素
        driver.execute_script("arguments[0].scrollIntoView();", driver.find_element(By.ID, "sellerProfileTriggerId"))
        driver.refresh()
        sleep(3)
        driver.find_element(By.ID, "sellerProfileTriggerId").click()
        seller_box = driver.find_element(By.CSS_SELECTOR,
                                         '#page-section-detail-seller-info > div:nth-child(1) > div:nth-child(1)').text
    except NoSuchElementException:
        continue
    # 输出链接
    print(seller_link)
    # 输出要获取的内容
    print(seller_box)


#点击下一页元素为linkText=Next

```

  • 写回答

2条回答 默认 最新

  • 桃宝护卫队 2023-04-27 17:45
    关注

    可以使用while循环和try-except语句来实现点击next按钮获取每一页链接的功能,直到无法点击next或页面结束。具体代码如下:

    a = []
    while True:
        # 遍历当前页面的链接
        for link in driver.find_elements(By.XPATH, '//*[@class="a-link-normal s-underline-text s-underline-link-text s-link-style a-text-normal"]'):
            a.append(link.get_attribute('href'))
            print(link.get_attribute('href'))
        try:
            # 点击下一页按钮
            next_button = driver.find_element(By.LINK_TEXT, 'Next')
            next_button.click()
            # 等待页面加载完成
            WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.s-search-results")))
        except NoSuchElementException:
            # 如果找不到下一页按钮,则退出循环
            break
    # 输出所有链接
    print(a)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月6日
  • 已采纳回答 4月28日
  • 创建了问题 4月27日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真