安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 编程茶楼 > Python > python获取完整网页内容(即包括js动态加载的):selenium+phantomjs

python获取完整网页内容(即包括js动态加载的):selenium+phantomjs

时间:2018-06-12来源:未知 作者:安云网点击:
在上一篇文章(http://blog.csdn.net/Trisyp/article/details/78732630)中我们利用模拟打开浏览器的方法模拟点击网页中的加载更多来实现动态加载网页并获取网页内容。但是很不幸,有些网站的这部分内容是使用js动态加载的,我们用普通方
//内容来自安云网

在上一篇文章(http://blog.csdn.net/Trisyp/article/details/78732630)中我们利用模拟打开浏览器的方法模拟点击网页中的加载更多来实现动态加载网页并获取网页内容。但是很不幸,有些网站的这部分内容是使用js动态加载的,我们用普通方法获取的时候,发现有些地方是空白的,所以没法获取Xpath,所以上篇文章方法也就失效了。
可能有些童鞋开始会认为是不是代码出错了,然后打印全部网页内容,发现想要的那部分内容确实没有,再用浏览器去访问网页,右键查看网页源代码发现这部分代码确实没有。我就是那个傻童鞋!!!
所以本篇文章就是希望能够解决这种问题,去抓取js动态加载的网页。首先想到的肯定是使用selenium来调用浏览器进行抓取,但是第一句就说明了,Xpath没法获取,所以就没法通过点击页面元素来实现了。这个时候看到了这篇文章(http://blog.csdn.net/yxwb1253587469/article/details/52233562),使用selenium+phantomjs来进行无界面抓取。
具体步骤如下:
1. 下载Phantomjs,下载地址:http://phantomjs.org/

//内容来自AnYun.ORG

2. 下完之后直接解压就OK了,然后selenium的安装用pip就行了
3. 写代码执行就完成了
//内容来自AnYun.ORG

完整代码如下:

import requestsfrom bs4 import BeautifulSoupimport refrom selenium import webdriverimport timedef getHTMLText(url):
        driver = webdriver.PhantomJS(executable_path='D:\\phantomjs-2.1.1-windows\\bin\\phantomjs')  # phantomjs的绝对路径        time.sleep(2)
        driver.get(url)  # 获取网页        time.sleep(2)        return driver.page_sourcedef fillUnivlist(html):
        soup = BeautifulSoup(html, 'html.parser')  # 用HTML解析网址        tag = soup.find_all('div', attrs={'class': 'listInfo'})
        print(str(tag[0]))        return 0def main():
    url = 'http://sports.qq.com/articleList/rolls/' #要访问的网址    html = getHTMLText(url) #获取HTML    fillUnivlist(html)if __name__ == '__main__':
    main()


本文标题: python获取完整网页内容(即包括js动态加载的):selenium+phantomjs 安云网
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容