有时候需要从网页上获取数据,比如别一些网页上的新闻获取到放到应用上,其实这也算是一个简单的网络爬虫。
一、使用流和正则表达式的方法
通过流的方式获取网页的数据同时用正则来筛选自己想要的数据。
我测试的网站是湖南师范大学翔网学术天地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秒以内
相关推荐
【PHP采集程序大全 - 菜鸟入门指南】 在互联网数据海量的时代,PHP采集程序,又称"小偷程序",成为获取和处理网络信息的重要工具。对于初学者来说,掌握PHP采集技术不仅可以提升开发能力,还能帮助理解网络数据的...
- **制作方法**:常见的网站镜像制作方法包括使用wget、HTTrack等工具抓取网站数据。 ### 3. 截止日期与版本控制 - **时间点**:2017年7月17日。这表示该镜像包含了截至该日期runoob网站的所有内容。 - **版本控制...
Python爬虫是一个强大的工具,用于自动化网络数据抓取。它允许开发者编写脚本来模拟人类浏览网页的行为,进而获取大量信息。在"python爬虫.rar"这个压缩包中,你将找到一系列与Python爬虫编程相关的代码示例,这对于...
WebMagic是一个开源的Java爬虫框架,它设计的目标是简化网页抓取的流程,使得开发者可以更加专注于数据的提取和处理。在这个名为"webMagic小项目"的压缩包中,你将找到一个可以直接运行的爬虫示例,无需额外编写代码...
本教程将深入探讨如何使用Pandas进行二手房数据的清洗,并将其存储为文件,适用于初学者入门实践。 首先,我们需要了解Python的基础语法。Python是一种高级编程语言,以其简洁明了的语法和强大的功能而闻名。在处理...
Python是优秀的自动化和脚本语言,教程可能会讲解如何使用Python进行日常任务自动化,如系统管理、文件处理、数据抓取等。 九、项目实践 为了巩固理论知识,教程通常会包含一些实际项目,比如构建一个简单的Web应用...
- 设计合理的爬虫架构,实现数据的高效抓取。 - 考虑并发控制、错误处理机制、数据存储方案等。 5. **遵守法律法规** - 了解并遵守相关的法律法规,尊重网站的robots.txt文件规定。 - 合理设置爬虫的访问频率...
学习Python爬虫的过程中,可以从简单的网页抓取开始,逐步深入到更复杂的场景,如动态网站爬取、反爬虫机制等。 以上就是从基础到高级的Python学习路线以及一些免费资源的推荐。希望这些内容能够帮助你更好地学习...
6. **数据绑定**:将控件的数据源绑定到某个数据对象,例如数据库记录或自定义对象,实现数据驱动的界面。 7. **窗体(Form)**:WinForm应用程序的基本构成单元,相当于应用程序的窗口。开发者可以在窗体上放置...
### Python之Scrapy爬虫框架安装及使用详解 ...通过本文介绍的安装和基本使用方法,可以帮助初学者快速上手Scrapy,开启数据抓取之旅。随着对Scrapy的深入理解,开发者可以进一步利用其高级特性实现更为复杂的功能。
这在处理日志文件、网页抓取、数据分析等场景中非常实用。 通过这个"实用最新版Python小白零基础入门教程",你可以逐步建立起对Python编程的全面理解,掌握基本的编程技巧,并能够解决简单的问题。随着学习的深入,...
这些库能够解析HTML或XML文档,抓取网页上的信息,如景点名称、地址、评价等。 3. 数据处理:爬取的数据可能需要清洗和预处理,例如去除重复项、处理异常值、格式化数据等。Python的pandas库提供了强大的数据操作...
1. **Python爬虫**:利用Python的requests、BeautifulSoup等库,可以轻松编写网络爬虫,抓取网页数据。 2. **Pygame**:这是一个Python模块,允许开发者创建2D游戏和多媒体应用程序。通过学习Pygame,你可以了解...
1. **Python爬虫教程**:菜鸟教程提供了一个很好的Python爬虫入门教程,适合初学者。 2. **Scrapy官方文档**:Scrapy框架的官方文档,详细介绍了使用方法和高级特性。 3. **Python爬虫实战**:崔庆才的博客分享...
- **实现目标**:利用Requests和BeautifulSoup库抓取网页内容。 - **技术要点**:学习HTML解析,掌握如何提取所需信息。 5. **机器学习项目** - **实现目标**:使用scikit-learn库训练和评估机器学习模型。 - *...
2. **在线教程**:网上有许多优质的网络爬虫教程,如菜鸟教程、MDN Web Docs等,可以帮助初学者快速入门。 3. **实战项目**:通过实际的爬虫项目,如爬取新闻网站、电商数据等,可以将理论知识转化为实践经验。 4....
对于网络编程,Python的requests库可以方便地发送HTTP请求,而BeautifulSoup或Scrapy框架则用于网页抓取。对于Web开发,Django和Flask是两个流行的Web框架。 Python还有一系列用于机器学习和人工智能的库,如...
19. **PR值含义**:PageRank(简称PR值)是Google评估网页重要性的算法之一。 20. **.htaccess文件作用**:用于设置URL重写规则、禁止特定IP访问等。 21. **301重定向设置**:通过`.htaccess`文件设置301重定向,...