【问题标题】:Using python with selenium to scrape dynamic web pages使用 python 和 selenium 抓取动态网页
【发布时间】:2012-01-28 21:01:43
【问题描述】:

在网站的顶部,有几个链接标记为 123next。如果点击了一个由数字标记的链接,它会动态地将一些数据加载到内容div 中。如果按下 next,它将转到标签为 456next 的页面 并显示第 4 页的数据。

我想从内容div中抓取所有按下的链接的数据(我不知道有多少,它一次只显示3个,下一个

请举例说明如何做。例如,考虑网站 www.cnet.com。

请指导我下载使用 selenium 的系列页面并自行解析它们以处理漂亮的汤。

【问题讨论】:

  • Selenium 有很好的教程,这将是一个很好的起点。
  • dm03514 是对的,这可能不适合问这样一个普遍的问题。

标签: python selenium


【解决方案1】:

一般布局(未测试):

#!/usr/bin/env python
from contextlib import closing
from selenium.webdriver import Firefox # pip install selenium

url = "http://example.com"

# use firefox to get page with javascript generated content
with closing(Firefox()) as browser:
    n = 1
    while n < 10:
        browser.get(url) # load page
        link = browser.find_element_by_link_text(str(n))
        while link:
           browser.get(link.get_attribute("href")) # get individual 1,2,3,4 pages
           #### save(browser.page_source)
           browser.back() # return to page that has 1,2,3,next -like links
           n += 1
           link = browser.find_element_by_link_text(str(n))

        link = browser.find_element_by_link_text("next")
        if not link: break
        url = link.get_attribute("href")

【讨论】:

  • 这篇文章很有帮助,但我需要通过类名找到元素。
  • @user1118534: update your question 并指定 links at the top labeled "1", "2", "3", and "next" 在您的情况下的含义(如果您不确定,则只需发布链接的 html:&lt;a href="..." ...&gt;...&lt;/a&gt;)。您可以使用browser.find_element_by_class_name(classname) 通过其类名查找元素。
  • 我正在学习抓取使用 java 脚本的网站作为学习的一部分,目前我想抓取网站 www.cnet.com 中所有 HP 笔记本电脑的编辑评论和用户评论。按照步骤转到所需的页面。访问 www.cnet.com,然后单击评论,然后转到笔记本电脑,然后查看所有品牌。选中 HP 复选框,并为所有页面中的每台笔记本电脑,如顶部的 1、2、3、4、.... 抓取编辑器和用户评论是我的目标。如果您能指导我这样做,我将不胜感激
  • @koushik: 1. 确保他们的 TOS 允许这样的使用。 2. 转到第三页,您可以使用:link = browser.find_element_by_link_text("3"); link.click()。要获得评论,请为每个 1、2、3、4、5 等页面保存 browser.page_source,并稍后解析它们以获取链接。 3. 使用 RSS 或 API 可能更简单,而不是抓取(如果可用)。
  • 非常感谢。我会试试这个,如果我还有什么要问的,我会回复你。非常感谢
猜你喜欢
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 2021-02-18
  • 2021-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
相关资源
最近更新 更多