我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第4篇文章,点击查看活动详情
大家好,我是日暮与星辰之间,创作不易,如果觉得有用,求关注,求点赞,求评论,求收藏,求转发,谢谢。
背景
假设你是一名Python小白,还只会一些基本的Python语法,对于计算机网络啥的一窍不通,忽然接到了老板的命令,说他想了解一下竞品社区某个话题的活跃度,希望你写个爬虫把活跃话题的内容及下面的评论给收集一下。然后你打开了百度,开始搜索Python 爬虫,然后迎面而来的一大堆文章都是request、beatuifulsoup、正则表达式之类的,但是你根本看不懂,你就想知道,能不能就像自己平时浏览网页一样,就把数据给爬下来了。
对于该场景,Selenium就是一个很合适的工具。
Selenium
Selenium其实是一个自动化测试工具,通过模拟鼠标、键盘的动作,来对浏览器进行操作(包括点击按钮、填写表单等,我们的思路就是通过模拟人的操作,来不断的访问网页内容,并且控制操作的频率,以达到迷惑反爬虫程序的目的
实践
配置环境
- 安装 Selenium
pip install selenium或者pip3 install selenium - 安装 webdriver(可以理解为浏览器的驱动器)
各大浏览器 webdriver 地址可参见:webdriver下载, 推荐使用 Chrome 谷歌浏览器 Chrome WebDriver 下载
注意
webdriver需要和对应的浏览器版本以及selenium版本对应。
Window:复制webdriver到Python安装目录下`
Mac: 复制webdriver到/usr/local/bin目录下
基本操作
启动浏览器
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('http://www.baidu.com/')
获取元素定位
我们可以通过id、name、tag_name、class_name、css_selector、xpath等方式获取对应的元素,然后进行以下操作。
- click——点击对象
- send_keys——在对象上模拟按键输入
- clear——清除对象的内容,如果可以的话
- submit——提交对象的内容,如果可以的话
- text——用于获取元素的文本信息 而text正是我们想要获取的数据,通过click、send_keys、submit可以帮我我们在不同的页面之间进行跳转。
#coding=utf-8
from selenium import webdriver
browser=webdriver.Chrome()
browser.get("http://www.baidu.com")
#########百度输入框的定位方式##########
#通过id方式定位
browser.find_element_by_id("kw").send_keys("selenium")
#通过name方式定位
browser.find_element_by_name("wd").send_keys("selenium")
#通过tag name方式定位
browser.find_element_by_tag_name("input").send_keys("selenium")
#通过class name方式定位
browser.find_element_by_class_name("s_ipt").send_keys("selenium")
#通过CSS方式定位
browser.find_element_by_css_selector("#kw").send_keys("selenium")
#通过xpath方式定位
browser.find_element_by_xpath("//input[@id='kw']").send_keys("selenium")
############################################
browser.find_element_by_id("su").click()
time.sleep(3)
browser.quit()
作为一名小白,你可能会觉得css_selector、xpath都是啥啊,这还是很复杂啊,有没有啥更简单的方法,要怎么才能知道到目标元素的id, class_name, tag_name, xpath呢。这就到了我们的开发者神器Chrome出场了。
点击左上角鼠标样式
点一下目标元素,比如下图中的输入框,可以看到有图中的有一块颜色变深了,这表示对应的html代码。tag_name是
input, class_name是s_ipt, autocomplete和maxlength是元素的property等, id 是kw。 xpath 和 css_selector可以通过下图的方式获取,在目标元素代码处右键。xpath 是一个强有力的工具,具体细节可以看xpath 教程
锁定元素后,我们可以直接右键复制selector或者xpath到代码里即可以使用。
总结
以上就是可视化、非常简单的爬虫方式,虽然效率不太理想,但是胜在对于新手来说所见即所得、很容易理解。Chrome甚至还有一些插件,可以自动录制我们的浏览器操作,帮助我们生成相关代码。如果大家感兴趣,欢迎留言,我会继续更新。大家关于爬虫的学习,如果有啥心得,也在评论区多交流交流。