java实现网络爬虫--抓取网站数据
2014-05-05 14:36
871 查看
接到需求大致意思是:批量查询IP地址归属地,要求给指定IP去指定网站(“中国互联网络信息中心”,网址http://www.cnnic.net.cn/)查询并获取查询结果的某几项数据。
实现过程中学到最多的就是正则表达式,本次用到的正则表达式如下:
该段对应网站源码如下:
正则表达式含义是要取:
这一段代码中的标红部分的内容。
正则表达式分析如下:
其中正则表达式中用到的符号及含义如下:
\s 表示“空格字符(空格键, tab, 换行, 换页, 回车)”
* 表示“重复零次或更多次”
^ 表示“ 一行的开始”
? 表示“重复零次或一次”
[ ] 表示“匹配方括号内的一个字符”
将以上正则表达式翻译如下:以“网络名称:</font>”开头,中间间隔多个“空格字符(空格键, tab, 换行, 换页, 回车)”后有一个</td>标签,然后再剪个多个“空格字符(空格键, tab, 换行, 换页, 回车)”,然后中间间隔两个以“>”开头的语句后且在以“<”开头的语句之间的内容即为需要获取的信息,即“IANA-NETBLOCK-192”。
相关源码下载
实现过程中学到最多的就是正则表达式,本次用到的正则表达式如下:
String regwlmc = "网络名称\\:</font>\\s*</td>\\s*<[^>]+?>\\s*<[^>]+?>([^<]+?) </font>";
该段对应网站源码如下:
<table border="1" cellspacing="0" cellpadding="2"> <tr> <td align="left" class="t_blue"><font size="2">IPv4地址段:</font></td> <td align="left" class="t_blue"><font size="2">192.168.0.0 - 192.168.255.255 </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">网络名称:</font></td> <td align="left" class="t_blue"><font size="2">IANA-NETBLOCK-192 </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">单位描述:</font></td> <td align="left" class="t_blue"><font size="2">This network range is not allocated to APNIC. </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">单位描述:</font></td> <td align="left" class="t_blue"><font size="2">descr: </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">单位描述:</font></td> <td align="left" class="t_blue"><font size="2">This block is reserved for private internets </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">单位描述:</font></td> <td align="left" class="t_blue"><font size="2">Please refer to RFC 1918 <http://www.ietf.org/rfc/rfc1918.txt> </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">单位描述:</font></td> <td align="left" class="t_blue"><font size="2">for more information. </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">单位描述:</font></td> <td align="left" class="t_blue"><font size="2">descr: </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">国家代码:</font></td> <td align="left" class="t_blue"><font size="2">AU </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">修改记录:</font></td> <td align="left" class="t_blue"><font size="2">hm-changed@apnic.net 20111206 </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2">数据来源:</font></td> <td align="left" class="t_blue"><font size="2">APNIC </font></td> </tr> <tr> <td align="left" class="t_blue"><font size="2"></font></td> <td align="left" class="t_blue"><font size="2"> </font></td> </tr> </table>
正则表达式含义是要取:
<tr> <td align="left" class="t_blue"><font size="2">网络名称:</font></td> <td align="left" class="t_blue"><font size="2"><span style="color:#ff0000;">IANA-NETBLOCK-192 </span></font></td> </tr>
这一段代码中的标红部分的内容。
正则表达式分析如下:
网络名称\\:</font>\\s*</td>\\s*<[^>]+?>\\s*<[^>]+?>([^<]+?) </font>
其中正则表达式中用到的符号及含义如下:
\s 表示“空格字符(空格键, tab, 换行, 换页, 回车)”
* 表示“重复零次或更多次”
^ 表示“ 一行的开始”
? 表示“重复零次或一次”
[ ] 表示“匹配方括号内的一个字符”
将以上正则表达式翻译如下:以“网络名称:</font>”开头,中间间隔多个“空格字符(空格键, tab, 换行, 换页, 回车)”后有一个</td>标签,然后再剪个多个“空格字符(空格键, tab, 换行, 换页, 回车)”,然后中间间隔两个以“>”开头的语句后且在以“<”开头的语句之间的内容即为需要获取的信息,即“IANA-NETBLOCK-192”。
相关源码下载
相关文章推荐
- iOS—网络实用技术OC篇&网络爬虫-使用java语言抓取网络数据
- Java--实现网络爬虫抓取RSS新闻(1)网络爬虫详解
- Jsoup实现网络爬虫抓取数据
- 基于Java的网络爬虫实现抓取网络小说(一)
- 【 网络爬虫】java 使用Socket, HttpUrlConnection方式抓取数据
- 四周实现爬虫系统(1)-抓取tripadvisor猫途鹰网站数据信息
- 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
- 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
- Python 网络爬虫5 ---- 第一次实现抓取数据并且存放到mysql数据库中
- 转载:基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
- JAVA 实现简单的网络爬虫,获取网站图片
- [置顶] 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
- Java简单实现爬虫技术,抓取整个整个网站所有链接+图片+文件(思路+代码)
- 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
- java简单实现爬虫、jsoup实现网页抓取、POI实现数据导出Excel
- java爬虫实现数据抓取
- 使用java 爬虫 抓取youtube,youku,facebook 等视频网站的视频数据(请求规则的分析)
- Java实现爬虫给App提供数据(Jsoup 网络爬虫)
- 【使用JSOUP实现网络爬虫】修改数据-设置属性的值
- Java爬虫,信息抓取的实现