前面的爬虫都是通过标签来爬取的,今天就分享一个小例子使用正则表达式来提取网页信息。如果你对正则表达式不熟悉,可以查看我之前写的R正则表达式这篇文章。它对R几个常用正则表达式进行了详尽的解释,包括参数说明,函数区别,正则表达式转义等都有介绍。

今天通过爬取腾讯教育(http://edu.qq.com/)网页的所有关于教育新闻的链接,另外也爬取图片链接。

提取新闻链接

首先我们来分析一些教育类新闻链接的特点。

"http://edu.qq.com/a/20180509/003811.htm"

最明显的特点就是以http://edu.qq.com/a/开头,以.htm结尾。我们可以根据这个特点来写正则表达式。http://edu.qq.com/a/+[0-9.*]+[/]+[0-9.*]+[.]+htm

library(rvest) # 不一定用这个包,只要能读取网页源码就行

url<-"http://edu.qq.com/"pages<-read_html(url)# gregexpr函数可以返回匹配字符的起始位置和长度。news<-gregexpr("http://edu.qq.com/a/+[0-9.*]+[/]+[0-9.*]+[.]+htm",pages)
通过浏览器查找功能发现源码有也有185个链接。

现在来查看一下news的值。长度也是185个。news是list数据类型。

> summary(news)Length Class  Mode
[1,] 185    -none- numeric
>

现在来提取这些新闻链接,

newslink<-vector()for(i in 1:length(news[[1]])){#链接为起始位置+长度-1newslink[i]<-substr(pages,news[[1]][i],news[[1]][i]+attr(news[[1]],'match.length')[i]-1)
}

结果为:

> head(newslink)
[1] "http://edu.qq.com/a/20180509/003811.htm" "http://edu.qq.com/a/20180509/003811.htm"

[3] "http://edu.qq.com/a/20180509/003811.htm" "http://edu.qq.com/a/20180507/038724.htm"

[5] "http://edu.qq.com/a/20180507/038724.htm" "http://edu.qq.com/a/20180507/038724.htm">
提取关于图片链接

分析图片链接如下,但其中间的字母除了ninja还有edu,所以这块也需要使用正则表达式来匹配。

”http://img1.gtimg.com/ninja/2/2017/01/ninja148480997229281.jpg“。

分析之后,发现图片链接都是开头为:

http://img1.gtimg.com/,接下来是/字母数字,以.jpg结尾。

根据这个特点,我们可以把正则表达式写为:

http://img1.gtimg.com/+[a-z0-9/.*]+[.]+jpg

分析好之后,开始使用正则表达式来提取链接。

#提取图片链接

imag<-gregexpr("http://img1.gtimg.com/+[a-z0-9/.*]+[.]+jpg",pages)

提取图片链接的方法和刚才提取新闻链接相同

imagelink<-vector()for(i in 1:length(imag[[1]])){
imagelink[i]<-substr(pages,imag[[1]][i],imag[[1]][i]+attr(imag[[1]],'match.length')[i]-1)
}

爬取的图片链接如下,总共有39个链接。

> head(imagelink)
[1] "http://img1.gtimg.com/ninja/2/2017/01/ninja148480995087885.jpg"[2] "http://img1.gtimg.com/edu/pics/hv1/13/32/2275/147940048.jpg"   [3] "http://img1.gtimg.com/edu/pics/hv1/34/243/2274/147928849.jpg"  [4] "http://img1.gtimg.com/edu/pics/hv1/87/194/2194/142714407.jpg"  [5] "http://img1.gtimg.com/edu/pics/hv1/89/194/2194/142714409.jpg"  [6] "http://img1.gtimg.com/edu/pics/hv1/111/194/2194/142714431.jpg" >
> length(imagelink)
[1] 39

通过浏览器查找功能发现源码有也有39个链接。

是不是用正则表达式提取信息很方便很简单?使用标签只能爬取标签内部的数据,使用正则表达式就可以从这个网页源码中提取全部相应的信息。这两种方法可以根据不同场景不同需求灵活使用。

注:

作者:王亨

公众号:跟着菜鸟一起学R语言

原文链接:http://blog.csdn.net/wzgl__wh/

爬虫 | 正则表达式提取腾讯教育新闻链接及图片链接相关推荐

  1. php超链接到图片,php正则表达式提取网页超链接url与网页中图片

    function match_links($document) { preg_match_all("']+))[^>]*>?(.*?)'isx",$document,$ ...

  2. Python爬虫之煎蛋网妹子图爬虫,解密图片链接加密方式

    之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...

  3. 【爬虫 初出茅庐】 爬取并下载想要图片 源码 分析 + 分享

    先上效果图. 如搜取并下载[鬼灭之刃]和[刀剑神域]相关图片 相关过程分析: (PS:因为刚学爬虫没几天,若大佬发现有什么问题欢迎指正) 这里爬取的网站是免费提供图片的51贴图.若光爬取单一或者连续网 ...

  4. 把电脑端的图片链接转换为API接口可以调用的链接

    我们本地上传一个图片保存的都是例如(D:\img\logo.jpg)这样的一个链接,但是我们调用接口不可能说远程调用你的电脑把,所以我们要把这个连接转换为这种格式(http://localhost:6 ...

  5. 正则表达式提取新闻发生时间

    最近在提取新闻事件的发生时间,现在只是实现了一个最简单的新闻,获取新闻报到时间和正文的时间. 方案:把正文中出现的第一个时间作为事情的发生时间,并按照统一的格式进行输出xxxx-xx-xx 某年某月某 ...

  6. 爬虫 spider08——爬取腾讯娱乐新闻【使用redis去重】

    根据 爬虫 spider07--爬取腾讯娱乐新闻 https://blog.csdn.net/qq_41946557/article/details/102566143 进行修改! 代码: impor ...

  7. 正则表达式提取markdown中图片链接(提取图片链接作为文章首图)

    网上搜使用正则表达式提取md中的图片链接作为文章首图 没找到好用的 只好自己写了一个 最大缺点 要自己去除括号 只能获取最后一个的url 以后有空再搞 let url = markdown.repla ...

  8. Python爬虫urllib2笔记(三)之使用正则表达式提取百度贴吧网页中的楼主发的图片

    使用正则表达式提取百度贴吧网页中的楼主发的图片 # -*- coding:utf-8 - import re #正则模块 import urllib2 import urllib#使用正则表达式提取百 ...

  9. Python爬虫入门之爬虫解析提取数据的四种方法

    本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法,通过具体的内容向大家展现,希望对大家Python爬虫的学习有所帮助. 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步 ...

最新文章

  1. ESXi6.5环境搭建(五:常见问题及解决方案实验总结)
  2. 图解 SQL,这也太形象了吧!
  3. linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist
  4. 安全登录代码 php,PHP登录怎么写安全
  5. CSS3---2D/3D应用
  6. Python+OpenCV图像处理之模糊操作
  7. (转)Bootstrap 之 Metronic 模板的学习之路 - (5)主题布局配置
  8. ASP.NET MVC5总结(二)@HTML扩展
  9. 【写作技巧】毕业论文写作资料--刊物搜索
  10. 微博爬虫 ----- 微博发布时间清洗
  11. Arduino呼吸灯
  12. 烽火服务器查询服务器型号,烽火服务器应该起的进程
  13. 微信小程序申请微信支付0.2费率商户号微信小程序接入开通流程
  14. 为web-polygraph添加user_agent和add_headers配置变量
  15. /usr/bin/ld cannot find -lGL
  16. 良心安利体育运动ppt幻灯片素材网站
  17. 肿瘤患者,要牢记这四大饮食原则
  18. HTML哪个单位是角度,css 角度单位有哪些?
  19. 阿甘修理机器人cd_【补偿】遗失的美好~
  20. 【Python】pandas的describe参数详解

热门文章

  1. XDC约束技巧之时钟篇
  2. .Net转Java.02.数据类型
  3. 从数据中心三大趋势看如何做布线规划
  4. 内存对齐的规则以及作用
  5. #27 回文数字 Palindrome Detector
  6. linux下mv命令移动目录的二种情况
  7. RhinoMock学习-绑定回调
  8. 使用回调方式写POI导入excel工具类
  9. Power Shell03 在PowerShell 3.0重新启动计算机指令
  10. VMware 使用