使用selenium爬取矿床地质报告

152 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

一、使用的第三库

Selenium:控制浏览器

bs4:解析html网页

time:设置睡眠时间

os:获取文件路径

re:正则表达式匹配

 

二、解析网站页面

矿床地质过刊浏览页面网址:www.kcdz.ac.cn/kcdz/ch/rea…

image.png

  从这个页面中我们可以获取到矿床地质期刊过去每一期的的期刊年份和期刊编号

image.png

点击具体某一期的期刊,我们可以看到这一期内所有的文章,分析地址栏信息,我们可以发现只要获取某期的具体年份和期次就可访问该某期内具体的文章,并且在该页面内点击[PDF]就可以下载该文章的pdf版本,所以我们可以按年份依次爬取每年给个期次的文章

  image.png

image.png  

综上,爬取该网站地质报告的思路为:首先设置需要获取期刊文章的年份,遍历所有年份,从“过刊浏览“网页获取具体年份的全部期次名称,然后遍历某一年份的全部期次,根据上面的分析,设置好某一期次的访问网址,跳转到该网址,再对该页面解析,获取该期次全部的文章以及对于文章的下载链接,并将文章下载到设置的文件路径中。这样就爬取到需要的地质报告了。

三、爬取过程

(一)下载chrome浏览器驱动

image.png  

(二)配置浏览器驱动对象属性

  • 设置为无头浏览器,即爬取数据时不弹出浏览器窗口

image.png

  • 设置浏览器文件下载路径、禁止弹出窗口等属性

image.png  

(三)创建浏览器驱动对象

image.png

 

(四)浏览器访问矿床地质过刊浏览页面

访问矿床地质过刊浏览页面,并获取该页面的html源代码,使用bs4第三方库对html代码解析解析,获取期刊全部年份

image.png

 

(五)解析页面

  • 根据上文的分析,设置每个具体期次的网址,并使用浏览器驱动对象跳转到对应的网址

image.png

 

  • 跳转到具体期次的网址后,使用re第三方库利用正则表达式,获取该期次所有文章的名称以其相应的下载网址

image.png

至此,所有的文章就都下载到设置好的文件夹下啦!

image.png