使用Python和Selenium抓取动态网页

4 投票
1 回答
12092 浏览
提问于 2025-04-17 09:07

在这个网站的顶部,有几个链接,分别标记为 123next。如果你点击一个数字标记的链接,它会动态加载一些数据到一个内容区域 div 中。如果你点击 next,页面会跳转到一个新页面,显示 456next 的链接,并且会显示第4页的数据。

我想要抓取每次点击链接后内容 div 中的数据(我不知道总共有多少个链接,因为它一次只显示3个和一个 next)。

请给我一个如何做到这一点的例子。比如,可以考虑网站 www.cnet.com。

请指导我如何使用 selenium 下载这些页面,并用 beautiful soup 解析它们,以便我自己处理。

1 个回答

11

一般布局(未测试):

#!/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")

撰写回答