`
raidyue
  • 浏览: 18781 次
  • 性别: Icon_minigender_1
  • 来自: 湖南常德
社区版块
存档分类
最新评论

菜鸟入门之网页数据抓取

阅读更多


有时候需要从网页上获取数据,比如别一些网页上的新闻获取到放到应用上,其实这也算是一个简单的网络爬虫。

一、使用流和正则表达式的方法

通过流的方式获取网页的数据同时用正则来筛选自己想要的数据。

我测试的网站是湖南师范大学翔网学术天地http://flyhigher.hunnu.edu.cn/channels/399.html



我们以获取标记的标题为例,查看网页的源码



我们可以发现所有标题的规律,然后可以定义出对应的正则表达式:>第\\d{3}讲:[^_]*</a>

首先我们获取读取网页的代码,然后不断用我们定义的正则来匹配

public void getData() {
		int i = 1;
		String newsTitle = ">第\\d{3}讲:[^_]*</a>";// 活动标题
		try {
			// 创建一个url对象来指向 该网站链接 括号里()装载的是该网站链接的路径
			URL url = new URL(strUrl);
			// InputStreamReader 是一个输入流读取器 用于将读取的字节转换成字符
			InputStreamReader isr = new InputStreamReader(url.openStream(),
					"utf-8"); // 统一使用utf-8
			// 编码模式
			// 使用 BufferedReader 来读取 InputStreamReader 转换成的字符
			BufferedReader br = new BufferedReader(isr);
			String strRead = "";// 新增一个空字符串strRead来装载 BufferedReader 读取到的内容
			// 开始读取数据 如果读到的数据不为空 则往里面读
			while ((strRead = br.readLine()) != null) {
				// 用于捕获标题数据
				String strTitleGet = regularMatch(newsTitle, strRead);
				// 如果捕获到了符合条件的 标题数据 则打印出来
				if (!strTitleGet.equals("nothing")) {
					strTitleGet = strTitleGet.substring(1,
							strTitleGet.indexOf("</a>"));
					 System.out.println(" Title:" + strTitleGet);
					
				}

			// 当读完数据后 记得关闭 BufferReader
			br.close();
		} catch (IOException e) {
			// 如果出错 抛出异常
			e.printStackTrace();
		}
			
	}

 

// 传入2个字符串参数 一个是pattern(我们使用的正则) 另一个matcher是html源代码
	public String regularMatch(String pattern, String matcher) {
		Pattern p = Pattern.compile(pattern, Pattern.COMMENTS);
		Matcher m = p.matcher(matcher);
		if (m.find()) { // 如果读到
			return m.group();// 返回捕获的数据
		} else {
			return "nothing"; // 否则返回一个空值
		}
	}

 程序跑起来……



 

不过还没有大功告成,这样会有一个问题,效率实在是不高,我们可以使用网上开源的html解析器jsoup,简单的说jsoup会对每一个页面进行解析,同时将该页面封装成一个“Document”对象,然后从一个“Document”对象中获取同样的标签封装成一个“Elements"对象,然后在筛选出想要的标签封装成“Element”对象,这样就获取到了我们需要的网页数据

	public void getHtmlData() {
		try {
			URL url = new URL("http://flyhigher.hunnu.edu.cn/channels/399.html");
			Document doc = Jsoup.parse(url, 100000);
			Elements element = doc.getElementsByTag("a");
			for (Element e : element) {
				// System.out.println("e:  " + e);
				String linkText = e.text();
				String linkHref = e.attr("href");
				if (regularMatch(pattern, linkText)) {
					System.out.println("linkText: " + linkText );
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

正则表达式都是相同的,结果也是相同的

简单的测试了一下时间第一种的时间是5-7秒,而第二种可以控制在1秒以内

 

 

 

  • 大小: 157.5 KB
  • 大小: 312.3 KB
  • 大小: 56.1 KB
分享到:
评论
1 楼 cangbaotu 2016-05-21  
数据抓取和爬虫入门开发者,可以学习一下这个爬虫开发教程,大牛分析地很到位。 http://blog.csdn.net/youmumzcs/article/details/51373830

相关推荐

    PHP采集程序大全 菜鸟必看 包含思路 小偷程序

    【PHP采集程序大全 - 菜鸟入门指南】 在互联网数据海量的时代,PHP采集程序,又称"小偷程序",成为获取和处理网络信息的重要工具。对于初学者来说,掌握PHP采集技术不仅可以提升开发能力,还能帮助理解网络数据的...

    runoob菜鸟教程网站镜像

    - **制作方法**:常见的网站镜像制作方法包括使用wget、HTTrack等工具抓取网站数据。 ### 3. 截止日期与版本控制 - **时间点**:2017年7月17日。这表示该镜像包含了截至该日期runoob网站的所有内容。 - **版本控制...

    python爬虫.rar

    Python爬虫是一个强大的工具,用于自动化网络数据抓取。它允许开发者编写脚本来模拟人类浏览网页的行为,进而获取大量信息。在"python爬虫.rar"这个压缩包中,你将找到一系列与Python爬虫编程相关的代码示例,这对于...

    webMagic小项目(可以直接用)

    WebMagic是一个开源的Java爬虫框架,它设计的目标是简化网页抓取的流程,使得开发者可以更加专注于数据的提取和处理。在这个名为"webMagic小项目"的压缩包中,你将找到一个可以直接运行的爬虫示例,无需额外编写代码...

    源码 - 如何使用 Pandas 清洗二手房数据并存储文件

    本教程将深入探讨如何使用Pandas进行二手房数据的清洗,并将其存储为文件,适用于初学者入门实践。 首先,我们需要了解Python的基础语法。Python是一种高级编程语言,以其简洁明了的语法和强大的功能而闻名。在处理...

    python九章入门到精通教程.zip

    Python是优秀的自动化和脚本语言,教程可能会讲解如何使用Python进行日常任务自动化,如系统管理、文件处理、数据抓取等。 九、项目实践 为了巩固理论知识,教程通常会包含一些实际项目,比如构建一个简单的Web应用...

    Python爬虫总结教学提纲.docx

    - 设计合理的爬虫架构,实现数据的高效抓取。 - 考虑并发控制、错误处理机制、数据存储方案等。 5. **遵守法律法规** - 了解并遵守相关的法律法规,尊重网站的robots.txt文件规定。 - 合理设置爬虫的访问频率...

    python学习路线重要板块以及资源下载

    学习Python爬虫的过程中,可以从简单的网页抓取开始,逐步深入到更复杂的场景,如动态网站爬取、反爬虫机制等。 以上就是从基础到高级的Python学习路线以及一些免费资源的推荐。希望这些内容能够帮助你更好地学习...

    winform自学初学

    6. **数据绑定**:将控件的数据源绑定到某个数据对象,例如数据库记录或自定义对象,实现数据驱动的界面。 7. **窗体(Form)**:WinForm应用程序的基本构成单元,相当于应用程序的窗口。开发者可以在窗体上放置...

    Python之Scrapy爬虫框架安装及使用详解

    ### Python之Scrapy爬虫框架安装及使用详解 ...通过本文介绍的安装和基本使用方法,可以帮助初学者快速上手Scrapy,开启数据抓取之旅。随着对Scrapy的深入理解,开发者可以进一步利用其高级特性实现更为复杂的功能。

    实用最新版Python小白零基础入门教程

    这在处理日志文件、网页抓取、数据分析等场景中非常实用。 通过这个"实用最新版Python小白零基础入门教程",你可以逐步建立起对Python编程的全面理解,掌握基本的编程技巧,并能够解决简单的问题。随着学习的深入,...

    毕业设计:基于python的热门旅游景点爬取与展示系统.zip

    这些库能够解析HTML或XML文档,抓取网页上的信息,如景点名称、地址、评价等。 3. 数据处理:爬取的数据可能需要清洗和预处理,例如去除重复项、处理异常值、格式化数据等。Python的pandas库提供了强大的数据操作...

    python学习导航(csdn)————程序.pdf

    1. **Python爬虫**:利用Python的requests、BeautifulSoup等库,可以轻松编写网络爬虫,抓取网页数据。 2. **Pygame**:这是一个Python模块,允许开发者创建2D游戏和多媒体应用程序。通过学习Pygame,你可以了解...

    python爬虫基础知识、爬虫实例、反爬机制等资源.docx

    1. **Python爬虫教程**:菜鸟教程提供了一个很好的Python爬虫入门教程,适合初学者。 2. **Scrapy官方文档**:Scrapy框架的官方文档,详细介绍了使用方法和高级特性。 3. **Python爬虫实战**:崔庆才的博客分享...

    Python语言教程&案例&相关项目资源

    - **实现目标**:利用Requests和BeautifulSoup库抓取网页内容。 - **技术要点**:学习HTML解析,掌握如何提取所需信息。 5. **机器学习项目** - **实现目标**:使用scikit-learn库训练和评估机器学习模型。 - *...

    蜘蛛:蜘蛛学习以及笔记记录

    2. **在线教程**:网上有许多优质的网络爬虫教程,如菜鸟教程、MDN Web Docs等,可以帮助初学者快速入门。 3. **实战项目**:通过实际的爬虫项目,如爬取新闻网站、电商数据等,可以将理论知识转化为实践经验。 4....

    notes:慢慢开始写笔记

    对于网络编程,Python的requests库可以方便地发送HTTP请求,而BeautifulSoup或Scrapy框架则用于网页抓取。对于Web开发,Django和Flask是两个流行的Web框架。 Python还有一系列用于机器学习和人工智能的库,如...

Global site tag (gtag.js) - Google Analytics