最近课有点多,在宿舍呆的时间好少,加上我现在还要做运动,学习的时间更少了,导致我的学习进度好慢好慢...最近在学习selenium了,在学习的过程中电脑出各种问题,比如导入的模块用不了了...又浪费了我很多时间。
selenium模块和爬虫之间有什么关联:
代码语言:javascript复制 1.便捷的获取网站中动态加载的数据
2.便捷实现模拟登录
什么是selenium:
基于浏览器自动化的一个模块
环境安装
pip install selenium
下载浏览器的驱动程序
实例化一个浏览器对象
编写基于浏览器自动化的操作代码
代码语言:javascript复制
简而言之就是可以自动操作浏览器的模块,比如让他自动抢票,自动点击某些东西...
这次的案例是模拟爬取化妆品审查网站中的企业名称,由于页面是动态加载出来的,所以我们获取不到页面中的企业名称,但是可以用selenium模块来爬取。
首先要先安装环境:
代码语言:javascript复制from selenium import webdriver #是这个
from lxml import etree # 其他要用的
from time import sleep
随后要实例化一个浏览器对象,但是在实例化之前,需要下载一个浏览器的驱动,要根据浏览器的版本下载,然后放进pycharm项目里。
代码语言:javascript复制# 实例化一个浏览器对象
bro = webdriver.Chrome(executable_path="./chromedriver")
我们可以让浏览器自动发起请求(get()方法),去访问我们指定的页面,然后还可以获取页面源码(page_source方法)
代码语言:javascript复制# 让浏览器对指定url发起请求
bro.get("http://scxk.nmpa.gov.cn:81/xk/")
# page_source获取浏览器当前页面的页面源码
page_text = bro.page_source
tree = etree.HTML(page_text)
然后用etree模块,定位标签
代码语言:javascript复制for li in li_list:
name = li.xpath("./dl/@title")[0]
print(name) # 尝试打出来
sleep(5) # 让浏览器休眠5秒
bro.quit() # 5秒后将自动关闭
现在运行来看下效果:
爬取成功了,这样我们就实现了一个简单的爬取
这次做的案例是让浏览器自动打开百度首页,在搜索栏中输入“iphone”,然后点击搜索,滑动到页面最底下,再跳转到第二页。我跟着视频学习时老师用的是淘宝,但是我的行不通,所以我就换成了百度,下面展示一下代码以及动图:
代码语言:javascript复制from selenium import webdriver
from time import sleep
bro = webdriver.Chrome(executable_path="./chromedriver")
bro.get("https://www.baidu.com/")
# 定位搜索框
search = bro.find_element_by_id("kw")
# 给搜索栏发送一个值(搜索的商品关键字)
search.send_keys("iphone")
# 点击搜索按钮
btn = bro.find_element_by_id("su")
btn.click()
# 稍微等待一下,否则无法滑动滚动条
sleep(1)
# 执行一组js代码
# 在搜索完滑动滚轮,向下翻一屏幕的页
bro.execute_script("window.scrollTo(0,document.body.scrollHeight)")
# 翻到第二页
turn = bro.find_element_by_xpath("//*[@id='page']/div/a[1]/span[2]")
turn.click()
sleep(5)
bro.quit()
效果图:
操作非常的快,中间也遇到了很多问题...害,我还重新安装了浏览器什么的,还有在淘宝操作的时候一直定位不到点击的元素,心情一度还挺崩溃的,好在今天还运动了,感觉分泌了多巴胺,使我的心情好多了。这两天没学HTML,因为实在没啥时间,今天中午还被学姐叫去排版公众号,又占用了我一个多小时...
话说我实在太喜欢这个模块了,我一定要好好学这个,但是他还涉及到一些前端的JS的知识,所以我要抓紧学前端了。