selenium简单爬虫爬取信息
《计算机网络与TCP/IP》课程设计实验报告
一、实验项目
网络爬虫系统
二、实验目的
了解计算机网络
三、实验内容
通过采用c或c++或Java语言实现网络爬虫抓取过程,实现分析html语言,抽取文本
四、实验过程
- 确定实验内容
本次试验我选取的是网络爬虫试验,网络爬虫通过统一资源定位符URL来查找目标网页,将用户所关注的数据内容直
接返回给用户,并不需要用浏览网页的形式去获取信息,为用户节省了时间和精力,并提高了数据采集的准确度,使
用户在海量数据中游刃有余。网络爬虫本质上是一段计算机程序或者脚本,按照一定的逻辑和算法自动抓取和下载网
页中的信息。 - 实验前准备
本次试验的内容相对于其他课程的对应试验而言,相对较为陌生,为此在开始试验之前我进行了相对较长时间的对
Python语言的学习和对较为前沿的内容的快速了解的学习。同时在试验前,由于无知,我试图使用我学习了不到一
个月的Python知识对反爬虫机制异常优秀的淘宝进行商品的爬取。初并没有遇到被淘宝方检测到是非人类行为,故
此是能够正常的对网页内容进行爬取,但是在几次对代码的调整下,对于selenium的检测使得不能通过无登陆状态
对商品进行搜索和其他的操作。 - 关于selenium
selenium是一个关于web自动化测试的工具,selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
selenium在使用过程中有三个角色,其一是自动化测试代码:自动化测试代码所发送请求给浏览器的驱动,其二是
浏览器的驱动:它解析这些自动化测试的代码,解析后把他们发送给浏览器,其三便是浏览器:执行浏览器驱动发来
的指令,并完成操作。 - 代码构成
模拟人类对网页进行的操作,可将代码分成四个大的板块:搜索(search_product),下拉浏览(drop_down),
获取信息(get_product),翻页(next _page)。主函数用于将网页接口接入爬虫程序。 - search_product
(1)确定元素位置“q” 对单个元素进行查找
(2)通过搜索点击进行交互 driver.find elements by id(element id):通过标签属性element id查找元素 send
keys(*value):将给元素赋予value值 driver.find elements by xpath(path):查找路径 click():模拟点击 在
搜索网页中进行测试(如:www.baidu.com),搜索不同的的关键词,观察URL中,关键词为“q?= keyword”,其
中“q”为元素,“keyword”为我们进行搜索的关键词。
(3)控制睡眠时间模拟人类浏览行动 time.sleep(time):强行睡
眠停止操作time秒 使用time库中函数模拟睡眠时间,防止加载不完全和后台检测为非人类行为 - drop_down
(1)使用JS文本分析模拟滑条下拉
js=‘document.documentElement.scollTop=document.documentElement.scollHeight * %f’ %f (2)通过
selenium定位执行JavaScrip的脚本命令 driver.excute_scrip(js):查找执行JavaScrip的脚本命令 (3)循环执行
下拉行动,每次下拉间隔一定时间,直到底部。此处下拉条的长度默认为1,故此当循环的数等于或者大于1时网页浏
览到达底部。 - get_product
(1)使用Google Chorm的网页源代码编辑工具,找到所要读取的页面信息 (2)根据标签的从属关系我们可以知道
一个商品的所有信息都在同一个父结点下,读取该父结点下的所有商品信息 driver.find_elements_by_path(父结点
路径):读取该路径下多标签的内容并储存 (3)根据标签选出所需内容 driver.find_element_by_path(文本子结点
路径):该最小标签下的文本路径 text:读取文本内容 (4)打印或者写入字典 - next_page()
(1)通过点击下一页进行翻页处理,观察每一页的URL可知,每一页的URL区别在于关键字 page = ‘page_number’ ,此处page_number表示页码。使用正则表达式对URL中的page_number进行更改。
(2)获取每一页的URL (3)等待加载资源 driver.implicate(time ):超时请求,智能等待休眠时间 (4)重复每
一页操作,翻页到制定的页面终点 - main
(1)主函数作为接口直接进入到网页中 webdriver.Chrom(浏览器驱动所在路径):使用驱动自动打开浏览器
driver.get(网址):通过驱动使用浏览器打开目标网页 (2)重复使用函数 search product() , drop down() , get product() , next page() 进行数据的读取。