教育网站建设的策划书,谷歌排名优化入门教程,wordpress 多重筛选,wordpress评论邮箱通知python有许多库可以让我们很方便地编写网络爬虫#xff0c;爬取某些页面#xff0c;获得有价值的信息#xff01;但许多时候#xff0c;爬虫取到的页面仅仅是一个静态的页面#xff0c;即网页 的源代码#xff0c;就像在浏览器上的“查看网页源代码”一样。一些动态的东西…python有许多库可以让我们很方便地编写网络爬虫爬取某些页面获得有价值的信息但许多时候爬虫取到的页面仅仅是一个静态的页面即网页 的源代码就像在浏览器上的“查看网页源代码”一样。一些动态的东西如javascript脚本执行后所产生的信息是抓取不到的这里暂且先给出这么一 些方案可用于python爬取js执行后输出的信息。
1、两种基本的解决方案
1.1 用dryscrape库动态抓取页面
js脚本是通过浏览器来执行并返回信息的所以抓取js执行后的页面一个最直接的方式就是用python模拟浏览器的行为。WebKit 是一个开源的浏览器引擎python提供了许多库可以调用这个引擎dryscrape便是其中之一它调用webkit引擎来处理包含js等的网页
import dryscrape
# 使用dryscrape库 动态抓取页面
def get_url_dynamic(url):
session_reqdryscrape.Session()
session_req.visit(url) #请求页面
responsesession_req.body() #网页的文本
#print(response)
return response
get_text_line(get_url_dynamic(url)) #将输出一条文本
这里对于其余包含js的网页也是适用的虽然可以满足抓取动态页面的要求但缺点还是很明显的慢太慢了其实想一想也合理python调用 webkit请求页面而且等页面加载完载入js文件让js执行将执行后的页面返回慢一点也是应该的除外还有很多库可以调用 webkitPythonWebkitPyWebKitGitPygt可以用它写个浏览器pyjamas等等听说它们也可以实现相同的功能
1.2 selenium web测试框架
selenium是一个web测试框架它允许调用本地的浏览器引擎发送网页请求所以它同样可以实现抓取页面的要求。
# 使用 selenium webdriver 可行但会实时打开浏览器窗口
def get_url_dynamic2(url):
driverwebdriver.Firefox() #调用本地的火狐浏览器Chrom 甚至 Ie 也可以的
driver.get(url) #请求页面会打开一个浏览器窗口
html_textdriver.page_source
driver.quit()
#print html_text
return html_text
get_text_line(get_url_dynamic2(url)) #将输出一条文本
这也不失为一条临时的解决方案与selenium类似的框架还有一个windmill感觉稍复杂一些就不再赘述
2、selenium的安装与使用
2.1 selenium的安装
在Ubuntu上安装可以直接使用pip install selenium。由于以下原因
1. selenium 3.x开始webdriver/firefox/webdriver.py的__init__中executable_pathgeckodriver而2.x是executable_pathwires
2. firefox 47以上版本需要下载第三方driver即geckodriver
还需要一些特殊操作
1. 下载 geckodriverckod 地址
mozilla/geckodriver
2. 解压后将geckodriverckod 存放至 /usr/local/bin/ 路径下即可
sudo mv /Downloads/geckodriver /usr/local/bin/
2.2 selenium的使用
1. 运行报错
driver webdriver.chrome()
TypeError: module object is not callable
解决方案浏览器的名称需要大写Chrome和FirefoxIe
2. 通过
content driver.find_element_by_class_name(content)
来定位元素时该方法返回的是FirefoxWebElement想要获取包含的值时可以通过
value content.text
到此这篇关于python如何爬取动态网站的文章就介绍到这了,更多相关python怎么爬动态网站内容请搜索python博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持python博客