Python可以运用selenium+scrapy来进行爬取拉勾网的信息

优采云 发布时间: 2021-07-16 21:29

  Python可以运用selenium+scrapy来进行爬取拉勾网的信息

  作为数据分析的强大工具,R语言也有很多方便的封装示例Rcurl和rvest,用于数据采集,满足基本需求。 知乎上已经有很多文章来介绍他们的用途了。

  但是,当我尝试爬取拉勾网的数据时,发现没有抓取到信息,而且源代码没有对应右键review元素,这让我很困扰。在网上搜索了相关问题,发现这是一个基于AJAX的动态网页,不同于静态网页。

  AJAX AJAX 代表“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),指的是一种用于创建交互式 Web 应用程序的 Web 开发技术。

  简单来说,网页通过异步传输获取页面信息。以拉勾网为例:

  

  

  点击右下角下一页后,页面内容发生了变化,但网址没有变化。对爬虫的影响是无法简单地使用Rcurl获取想要的信息。

  查找相关资料,了解到Python可以使用selenium+scrapy来抓取动态网页。

  Selenium(浏览器自动化测试框架)Selenium 是一种用于 Web 应用程序测试的工具。 Selenium 测试直接在浏览器中运行,就像真实用户操作一样。

  无独有偶,作为开源语言,R语言也为类似的操作开发了相应的Rwebdriver包。

  本文基于Rwebdriver包抓取拉勾网信息。

  前期准备

  先下载selenium.3.4。 (下载链接)

  要运行selenium,需要java并配置环境变量。 (不明白的请戳传送门)

  那么如果你的浏览器和我一样是chorme,你需要下载对应版本的浏览器驱动chormedriver。

  (下载地址比如我是V59,对应的下载就近2.31)

  Chromedriver可以放在chorme的安装根目录下,路径也设置为系统路径。

  (比如我把chromedriver放在"C:\Program Files (x86)\Google\Chrome\Application\",所以我也把path设置为path)

  最后在selenium所在根目录打开cmd,输入“java -jar selenium-server-standalone-3.4.0.jar”启动服务。

  (每次开启selenium服务都需要,所以可以写个bat)

  

  

  当出现“Selenium Server is up and running”时,表示它开始运行了。

  R 语言代码部分

  需要加载的包

  library(RCurl)# 抓取数据

library(XML)# 解析网页

library(stringr)# 字符串处理

library(dplyr)# 调用%>%管道

library(Rwebdriver)# 爬取动态网页

  Rwebdriver包需要通过调用devtools从github下载:

  devtools::install_github(repo = "Rwebdriver", username = "crubba")

  提供主要的浏览器操作功能:

  start_session(root = NULL, browser = "firefox",

javascriptEnabled = TRUE, takesScreenshot = TRUE,

handlesAlerts = TRUE, databaseEnabled = TRUE,

cssSelectorsEnabled = TRUE) # 打开浏览器

post.url(url = NULL) # 打开网页

page_refresh() # 刷新网页

page_back() # 网页后退

page_forward() # 网页前进

page_source() # 获得当前页面信息

element_xpath_find() #通过XPATH找到所要部分

element_css_find() #通过CSS找到所要部分

element_click(ID = ID, times = 1, button = "left")# ID为所要点击的地方,times为点击次数,button="left"为左键点击

keys()#输入内容

element_clear()#清除内容

  以下为爬行拉钩网示例,可根据需要修改:

<p>start_session(root = &#39;http://localhost:4444/wd/hub/&#39;,browser ="chrome")# 默认端口是4444,我的浏览器是chorme,如果使用火狐改成firefox

list_url

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线