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

今天在整理本地资料时,挖掘出了早几年因工作需要用到爬虫的一些备注,分享下,如果能帮到一部分人,荣幸之至微笑~


工作流大致是: 

首先利用多线程,能过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}.*?>([^</>]*)


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值