selenium简单爬虫爬取信息

《计算机网络与TCP/IP》课程设计实验报告

一、实验项目

网络爬虫系统

二、实验目的

了解计算机网络

三、实验内容

通过采用c或c++或Java语言实现网络爬虫抓取过程,实现分析html语言,抽取文本

四、实验过程

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