使用Python和Selenium抓取动态网页
在这个网站的顶部,有几个链接,分别标记为 1、2、3 和 next。如果你点击一个数字标记的链接,它会动态加载一些数据到一个内容区域 div
中。如果你点击 next,页面会跳转到一个新页面,显示 4、5、6 和 next 的链接,并且会显示第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")