python如何爬取动态⽹站
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_req=dryscrape.Session()
session_req.visit(url) #请求页⾯
response=session_req.body() #⽹页的⽂本
#print(response)
return response
get_text_line(get_url_dynamic(url)) #将输出⼀条⽂本
这⾥对于其余包含js的⽹页也是适⽤的!虽然可以满⾜抓取动态页⾯的要求,但缺点还是很明显的:慢!太慢了,其实想⼀想也合理,python调⽤ webkit请求页⾯,⽽且等页⾯加载完,载⼊js⽂件,让js执⾏,将执⾏后的页⾯返回,慢⼀点也是应该的!除外还有很多库可以调⽤ webkit:PythonWebkit,PyWebKitGit,Pygt(可以⽤它写个浏览器),pyjamas等等,听说它们也可以实现相同的功能!
1.2 selenium web测试框架
selenium是⼀个web测试框架,它允许调⽤本地的浏览器引擎发送⽹页请求,所以,它同样可以实现抓取页⾯的要求。
ubuntu怎么安装python# 使⽤ selenium webdriver 可⾏,但会实时打开浏览器窗⼝
def get_url_dynamic2(url):
driver=webdriver.Firefox() #调⽤本地的⽕狐浏览器,Chrom 甚⾄ Ie 也可以的
<(url) #请求页⾯,会打开⼀个浏览器窗⼝
html_text=driver.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_path="geckodriver";⽽
2.x是
executable_path="wires"
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和Firefox,Ie
2. 通过
content = driver.find_element_by_class_name('content')
来定位元素时,该⽅法返回的是FirefoxWebElement,想要获取包含的值时,可以通过
value =
到此这篇关于python如何爬取动态⽹站的⽂章就介绍到这了,更多相关python怎么爬动态⽹站内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。