python爬虫之selenium(1)
Q1.验证当前页面是动态加载出来的
1.根据URL地址,利用F12开发者工具抓包,Response中返回的是响应数据,利用搜索,判断当前数据是否是通过ajax请求动态加载出来的。
Q2.如何获取动态加载到的数据
2.利用ALL中所有的包,点击一下,CTRL+F进行全局搜索,找到响应包中含关键字的包,再利用Headers中的URL和下面的参数发请求
selenium模块的基本使用
-
selenium模块和python之间的关联?
- 便捷的获取网页中动态加载出来的数据
- 便捷实现模拟登录
-
什么是selenium模块?
- 基于浏览器自动化的一个模块。
-
selenium模块的使用流程
- 环境安装:pip install selenium
小插曲:pip显示需要更新,然后总是超时更新失败,百度后,用了这行命令完美解决
- 安装浏览器驱动
- 下载路径:https://liushilive.github.io/github_selenium_drivers/md/Chrome.html
- 下载版本对应:谷歌-帮助-关于Google Chrome - 实例化一个浏览器对象
ps:Chrome里面的C大写,否则请求不到
from selenium import webdriver
bro = webdriver.Chrome(executable_path='./chromedriver.exe')
- 编写基于浏览器自动化的操作代码
from selenium import webdriver
from lxml import etree
from time import sleep
#1.实例化一个浏览器驱动程序
bro = webdriver.Chrome(executable_path='./chromedriver.exe')
#2.让浏览器发一个指定URL的请求
bro.get('http://yjsgk.jsczt.cn/front/glwj/list.do?groupid=160&channel=17')
#3.获取浏览器当前页面的页面源码数据
page_text = bro.page_source
#4.解析数据,获取各单位名称
tree = etree.HTML(page_text)
li_list = tree.xpath('//ul[@id="department"]/li')
for li in li_list:
name = li.xpath('./a/text()')[0]
print(name)
#睡眠5s
sleep(5)
#关闭浏览器
bro.quit()
本来源码中没有单位名称,但是利用selenium可以实现捕获动态加载的数据