爬虫 | 正则表达式提取腾讯教育新闻链接及图片链接
前面的爬虫都是通过标签来爬取的,今天就分享一个小例子使用正则表达式来提取网页信息。如果你对正则表达式不熟悉,可以查看我之前写的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/
爬虫 | 正则表达式提取腾讯教育新闻链接及图片链接相关推荐
- php超链接到图片,php正则表达式提取网页超链接url与网页中图片
function match_links($document) { preg_match_all("']+))[^>]*>?(.*?)'isx",$document,$ ...
- Python爬虫之煎蛋网妹子图爬虫,解密图片链接加密方式
之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...
- 【爬虫 初出茅庐】 爬取并下载想要图片 源码 分析 + 分享
先上效果图. 如搜取并下载[鬼灭之刃]和[刀剑神域]相关图片 相关过程分析: (PS:因为刚学爬虫没几天,若大佬发现有什么问题欢迎指正) 这里爬取的网站是免费提供图片的51贴图.若光爬取单一或者连续网 ...
- 把电脑端的图片链接转换为API接口可以调用的链接
我们本地上传一个图片保存的都是例如(D:\img\logo.jpg)这样的一个链接,但是我们调用接口不可能说远程调用你的电脑把,所以我们要把这个连接转换为这种格式(http://localhost:6 ...
- 正则表达式提取新闻发生时间
最近在提取新闻事件的发生时间,现在只是实现了一个最简单的新闻,获取新闻报到时间和正文的时间. 方案:把正文中出现的第一个时间作为事情的发生时间,并按照统一的格式进行输出xxxx-xx-xx 某年某月某 ...
- 爬虫 spider08——爬取腾讯娱乐新闻【使用redis去重】
根据 爬虫 spider07--爬取腾讯娱乐新闻 https://blog.csdn.net/qq_41946557/article/details/102566143 进行修改! 代码: impor ...
- 正则表达式提取markdown中图片链接(提取图片链接作为文章首图)
网上搜使用正则表达式提取md中的图片链接作为文章首图 没找到好用的 只好自己写了一个 最大缺点 要自己去除括号 只能获取最后一个的url 以后有空再搞 let url = markdown.repla ...
- Python爬虫urllib2笔记(三)之使用正则表达式提取百度贴吧网页中的楼主发的图片
使用正则表达式提取百度贴吧网页中的楼主发的图片 # -*- coding:utf-8 - import re #正则模块 import urllib2 import urllib#使用正则表达式提取百 ...
- Python爬虫入门之爬虫解析提取数据的四种方法
本文主要介绍了Python爬虫入门之爬虫解析提取数据的四种方法,通过具体的内容向大家展现,希望对大家Python爬虫的学习有所帮助. 基础爬虫的固定模式 笔者这里所谈的基础爬虫,指的是不需要处理像异步 ...
最新文章
- ESXi6.5环境搭建(五:常见问题及解决方案实验总结)
- 图解 SQL,这也太形象了吧!
- linux生成文件清单,Linux 获取文件名称生成列表 txt - create_filelist
- 安全登录代码 php,PHP登录怎么写安全
- CSS3---2D/3D应用
- Python+OpenCV图像处理之模糊操作
- (转)Bootstrap 之 Metronic 模板的学习之路 - (5)主题布局配置
- ASP.NET MVC5总结(二)@HTML扩展
- 【写作技巧】毕业论文写作资料--刊物搜索
- 微博爬虫 ----- 微博发布时间清洗
- Arduino呼吸灯
- 烽火服务器查询服务器型号,烽火服务器应该起的进程
- 微信小程序申请微信支付0.2费率商户号微信小程序接入开通流程
- 为web-polygraph添加user_agent和add_headers配置变量
- /usr/bin/ld cannot find -lGL
- 良心安利体育运动ppt幻灯片素材网站
- 肿瘤患者,要牢记这四大饮食原则
- HTML哪个单位是角度,css 角度单位有哪些?
- 阿甘修理机器人cd_【补偿】遗失的美好~
- 【Python】pandas的describe参数详解