【问题标题】:Python Selenium - Clicking Next PagePython Selenium - 单击下一页
【发布时间】:2020-03-17 00:16:39
【问题描述】:

我目前正在编写一个 python selenium 脚本来获取网站的信息。

我已经成功拿到了我想要的格式的1/100+页的数据。很遗憾,我无法让程序运行并收集后续页面上的所有信息。

当我查看网站target 脚本时,它显示“下一步”按钮编译如下;

/body/div[@id='main-content']/div[@class='t6a-grid']/div[@class='mmargin-bottom-30']/div[@id='grid']/div[@class='row-margin-bottom-10']/div[@class='col-md-12 padding-left-0 padding-right-20']/ul[@class='pagination']/li[11]/a

我写的部分脚本如下。脚本中的“# 这是导航到下一页元素”是当前不工作的区域。

def get_links(driver, target):
    # this is to collect links that associate with all the profiles present in Freshfields website

    driver.get(target)
    # get links associated to profiles on result page
    list_links = [] 
    while True:
        list_ppl_link =  driver.find_elements_by_xpath('//div[@class=" mix item col-xs-6 col-sm-4"]')      
        for item in list_ppl_link:
            emp_name_obj = item.find_element_by_tag_name('a')
            emp_name = emp_name_obj.text
            emp_link = emp_name_obj.get_attribute('href')
            list_links.append({'emp_name':emp_name, 'emp_link':emp_link})
        try:
            # this is navigate to next page
            driver.find_element_by_xpath('//ul[@class="pagination"]/li').click()
            time.sleep(1)
        except NoSuchElementException:
            break
    return list_links

请有人帮助我了解如何循环浏览页面并收集 1,960 条记录?

【问题讨论】:

  • 在问题的格式上多做一些工作,因为它不清楚。我看不到“粗斜体”中的任何内容。
  • 嗨。好点子。我现在更新了问题以识别脚本中“#这是导航到下一页元素”的区域不起作用。谢谢。

标签: python selenium-chromedriver


【解决方案1】:

尝试使用以下内容:

list_ppl_link =  driver.find_elements_by_xpath('//div[@class=" mix item col-xs-6 col-sm-4"]') 
    i=1     
    for item in list_ppl_link:
        i=i+1
        emp_name_obj = item.find_element_by_tag_name('a')
        emp_name = emp_name_obj.text
        emp_link = emp_name_obj.get_attribute('href')
        list_links.append({'emp_name':emp_name, 'emp_link':emp_link})
    try:
        # this is navigate to next page
        driver.find_element_by_xpath('//ul[@class="pagination"]//li/a[contains(text(),"' + str(i) +'")').click()
        time.sleep(1)
    except NoSuchElementException:
        break

【讨论】:

  • 感谢您回复我。我已经尝试过该方法,但收到以下错误消息“无法连接 'str' 和 'int' 对象”。请您给点建议?
  • 好的,所以您必须使用 str(i) 将您的 i 转换为字符串;我已经更新了代码。
  • 在 SO 上的任何答案旁边都会有一个勾号,点击它会使答案被接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多