在工作中,经常需要将网页上的大块大块的标准化的内容下载下来。这个时候,没有什么比编写个脚本更方便的了。

为什么选择Perl来做,主要还是Perl在文本处理方面有着天然的优势。

以最近同事让我做的下载加油站网站作为例子,加油站的网址是:http://www.cheduoshao.com/gas/1/,同事想把加油站的名称和地址,下载下来,要一个一个粘贴太没效率了。

做这个事情的大概顺序是:

1,Perl

既然是初学,首先要会用Perl,如果会的话,可以跳过这部分。如果不会也没关系,先安装一下,在网上搜ActivePerl的win32安装包,一路下一步就好了。怎么运行呢,拿记事本写个Perl程序,保存到D盘根目录下,名字是1.pl,内容是:

#!perl -w
use strict;
print "Hello,World!\n";

然后进CMD,在D:\下,输入1.pl回车,如果不行,就输入perl 1.pl,就能看到我们的HelloWorld了。
Perl其实挺简单的,下个《Perl语言入门》,作者是Randal L.Scbwartz,把2,3,4,5,8,9章看完就OK了,正则表达式一定要会。

2,分析网页结构

在网页中找到最后一页:http://www.cheduoshao.com/gas/1/62.html,这样可以观察到,北京的加油站就是http://www.cheduoshao.com/gas/1/××页.html。所以只要做一次从1-62的遍历,就可以从第一页抓取到第62页了;

在网页中,选择查看源文件,会发现,其实每一页的加油站的列表,每个加油站对应的源代码都是一样的(废话~),比如这段:

            </script>
<ul>
<li class="width310">
<h1><a href="/gas/details_51812.html" target="_blank">中石化石泉加油站</a></h1>
<p>地址:北京市海淀北京市海淀区万柳路南,巴沟路北,圣化寺路口向北</p>
</li>
<li class="width400"><p></p></li>
<li class="width140">

那正则表达式,提取就好了,表达式是:s#class="width310">.+?href=".+?>(.+?)<.+?p>(.+?)<##xs

3,编码:

然后就是源代码了:

#!perl -w
use strict;
use LWP::UserAgent;
open OUTPUT,'>','weblist.txt' or die 'weblist.txt error!';
my $get_page = LWP::UserAgent -> new;
$get_page -> timeout(10);
my $page_addr = '';
my $response = '';
my $content = '';
my $pro_name = '';
my $pro_addr = '';
my $web_list = '';
&print_list();
sub print_list{
foreach (1 .. 10 ){    #
        $page_addr = 'http://www.cheduoshao.com/gas/1_0_null_p'.$_.'.html';#此处是每页的网址
$response = $get_page -> get( $page_addr );
$content = $response -> content;
print $_."done\n";
$content =~ s#<!DOCTYPE.+?class="jy_6">##xs;
while ( $content =~ s#class="width310">.+?href=".+?>(.+?)<.+?p>(.+?)<##xs){$pro_name = $1;
$pro_addr = $2;
print OUTPUT "$pro_name\t$pro_addr\n";
}
}
}

输出的weblist.txt,复制到excel里面,因为每行有\t隔开,所以直接就是表格形式的。

也有复杂的网页,其实一个道理,我一般是用txt作为中转,先在列表页抓取所有内容页的网址写入txt,再做个程序依次地抓取内容页。

使用Perl进行网页数据抓取[初学者简明版]相关推荐

  1. 网页数据抓取-网页实时数据抓取软件

    网页数据抓取,随着社会的发展,互联网的普及,不管是企业还是个人都意识到数据的重要性.今天给大家分享一款免费的网页数据抓取软件.只要点点鼠标就能轻松采集你想要的内容不管是导出还是自动发布都支持!详细参考 ...

  2. 1.3 网页数据抓取

    1.3 网页数据抓取 李沐 B站:https://space.bilibili.com/1567748478/channel/collectiondetail?sid=28144 课程主页:https ...

  3. 如何用python抓取文献_浅谈Python爬虫技术的网页数据抓取与分析

    浅谈 Python 爬虫技术的网页数据抓取与分析 吴永聪 [期刊名称] <计算机时代> [年 ( 卷 ), 期] 2019(000)008 [摘要] 近年来 , 随着互联网的发展 , 如何 ...

  4. 李沐【实用机器学习】1.3网页数据抓取

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.数据抓取工具 二.实例解析 总结 前言 网页数据抓取目标:在一个网站里面感兴趣的数据抓取出来 数据特点:噪点较多, ...

  5. 网页数据抓取之当当网

    所谓"网页数据抓取",也称为网页数据采集,Web数据采集等等,就是从我们平时通过浏览器查看的web网页上来提取需要的数据信息,然后以结构化的方式存储到CSV.JSON.XML.AC ...

  6. 网页数据抓取,关键在于抓取的准确性和应对海量数据时的快速反应

    无论是互联网科技.大数据.还是云计算,关键都在于技术优势,技术的成本和门槛都很高,不是两三个人零成本就可以打造一个产品. 我们以网页数据抓取来说,一门基于web结构或基于浏览器可视化的数据获取技术,关 ...

  7. vba抓取网页数据到excel_R语言网页数据抓取XML数据包

    有些网络上的数据无法复制粘贴,一个一个录入有点费时费力,此时用这种数据抓取方法,短短几句,简单实用.XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用 ...

  8. Android登录客户端,验证码的获取,网页数据抓取与解析,HttpWatch基本使用

    大家好,我是M1ko.在互联网时代的今天,如果一个App不接入互联网,那么这个App一定不会有长时间的生命周期,因此Android网络编程是每一个Android开发者必备的技能,博主是在校大学生,自学 ...

  9. Jmeter压力测试 Web网页数据抓取-【教学篇】

    Jmeter快速使用 特此郑重声明!该文章是原创作品,小编编写实属不易 ,转载小伙伴请注明出处!谢谢 概述 Apache JMeter Apache组织开发的压力测试工具.目前通过HTTP和FTP服务 ...

最新文章

  1. Centos6.2救援模式修改密码
  2. SqlServer数据库基础知识整理(不断更新~)
  3. 基于STM32F103双轴机械臂完整电路板设计
  4. php mysql 多行查找_PHP使用mysqli同时执行多条sql查询语句的实例
  5. Can‘t pickle local object ‘get_transforms.<locals>.process‘
  6. easy_Maze 梅津美治郎 寒假逆向生涯(16/100)
  7. java语言中的数据是如何定义_java中的数据类型
  8. CentOS GRUB引导错误无法进入系统解决办法
  9. hdu 4599 Dice
  10. VMware ESXi客户端连接控制台时提示VMRC控制台连接已断开...正在尝试重新连接的解决方法...
  11. 【机器学习】 吴恩达机器学习作业 ex1 python实现+Matlab实现
  12. 变量的作用域与生命周期
  13. 回首2017,展望2018
  14. Webservice CXF 调用报错 Could not find conduit initiator for address:
  15. Node.JS实战57:给图片加水印。
  16. win10系统崩溃怎么修复_手把手教你“无损”修复win10系统
  17. 微信小程序--实现番茄钟功能
  18. Z-blogPHP蜘蛛访问日志统计插件+自动收集死链
  19. Redis 性能优化 13 条军规
  20. 第二十八节:Java基础-进阶继承,抽象类,接口

热门文章

  1. [WPF]有Focus(), 那Unfocus()呢?
  2. Python迭代对象、迭代器、生成器
  3. Win10 Redstone再添新技能:深度集成App-V应用虚拟化
  4. 转:华 为 路 由 常 用 命 令
  5. 查询mysql所有表的大小
  6. coding4fun比赛总结
  7. 希望大家推荐一个javaweb开源框架
  8. 拥有开源安全背景的开发员当选白宫技术总监
  9. Springboot 1.x 连接Oracle 10.2数据库
  10. 大道至简读书笔记(1)