您的位置:首页 > 其它

爬虫总结 && 部分正则匹配

2017-06-04 16:36 393 查看
今天在整理本地资料时,挖掘出了早几年因工作需要用到爬虫的一些备注,分享下,如果能帮到一部分人,荣幸之至

~

工作流大致是: 

首先利用多线程,能过http协议连接对方网站,获取html字符串,可以用java.net包里的工具类或者其它开源包。 

接着通过正则表达式解析html标记,网上资源很多的可以搜一下也可以用开源包。 

这样一个基本的爬虫就实现了,剩下来的问题就是如何防止重复爬取网页,如何防止爬取其它链接资源,还有抓取目录的

可以去google搜索,很多的。 关键字 htmlparser ,httpclient 爬虫层级。

google: baidu:

java html解析器

//匹配url 
//匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ 

知道正则表达式中匹配汉字用:

\u4e00-\u9fa5


知道用\d匹配数字,\w匹配单词,\n换行……,可用什么匹配双引号呢"

正则表达式 双引号

\u0022


匹配标题:
<title>([^</title>]*)

对于html代码是:

<span name="shangcode" id="shangcode">0501010320</span>
的,使用如下正则表达式精准匹配id的值

正则(反斜杠):
<span\sname=\u0022shangcode\u0022\sid=\u0022shangcode\u0022>([^</span>]*)
java正则(斜杠):
<span/sname=/u0022shangcode/u0022/sid=/u0022shangcode/u0022>([^</span>]*)


对于html代码是:
<span class="s2" id="webspan"> 209.00 </span>
的,使用如下正则表达式精准匹配价格的值

正则(反斜杠):
<span\sclass=\u0022s2\u0022\sid=\u0022webspan\u0022>([^</span>]*)
java正则(斜杠):
<span/sclass=/u0022s2/u0022/sid=/u0022webspan/u0022>([^</span>]*)


对于html代码是:
<span title="0-1岁">0-1岁</span>
<span title="6-12个月">6-12个月</span>
的,使用如下正则表达式精准匹配年龄的值
正则(反斜杠):

<span\stitle=\u00220-1\u5c81\u0022>([^</span>]*)
java正则(双反斜杠):
<span\\stitle=\\u00220-1\\u5c81\\u0022>([^</span>]*)


html代码是:
年龄:</td>

\u5e74\u9f84\uff1a</td>

适合年龄:</td><td width="631" bgcolor="#FFFFFF"><span title="0-1岁">

\u5e74\u9f84[^*]{20,58}([^\u0022>]*)

\u5e74\u9f84\uff1a</td>[^\s]{20,22}
\u5e74\u9f84\uff1a</td>[^*]{1,}

对于html代码是:

<a id="bighref" href="http://www.***.com/images/product/8b/b0/8bb05984b23b470593694b7d4d1da2b5_1_l.jpg"
class="MagicZoom">
的,使用如下正则精准匹配:

正则(反斜杠):
<a\sid=\u0022bighref\u0022\shref=\u0022([^\u0022]*)


java正则(斜杠):
<a\\sid=\\u0022bighref\\u0022\\shref=\\u0022([^\\u0022]*)


\u5e74\u9f84\uff1a.*?\u0022([^\u0022>]*)

love.*?you

年龄:50个字符第一个引号,
\u5e74\u9f84\uff1a[^*]{50,50}.*?\u0022([^\u0022>]*)

<div class="product-heading">
<div\sclass=\u0022product-heading\u0022>[^*]{200,200}.*?>([^</>]*)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: