java抓取网页内容(有时匹配到的img值还会出现非图片url的情况)
优采云 发布时间: 2021-10-03 03:05java抓取网页内容(有时匹配到的img值还会出现非图片url的情况)
Java抓取简单的网页内容和图片
根据java网络编程相关的内容,可以使用jdk提供的相关类获取url对应的网页的html页面代码。
对于得到的html代码,我们可以通过正则表达式得到我们想要的内容。
例如,如果我们要获取网页上收录关键字“java”的所有文本内容,我们可以将网页代码逐行与正则表达式匹配。最后达到去除html标签和无关内容的效果,只得到收录关键字“java”的内容。
从网页中抓取图片的过程与抓取内容的过程基本相同,但抓取图片的过程会多一步。
需要使用img标签的正则表达式匹配获取img标签,然后使用src属性的正则表达式获取img标签中src属性的图片url,然后读取img标签的图片url图片url通过缓存的输入流对象信息,配合文件输出流,将读取到的图片信息写入本地。
除了这两种玩法外,爬虫还有很多应用,比如爬取一个网页上的所有邮箱、电话号码等等。
运行结果:
这些内容是基于csdn主页的关键字“你”。
这些是我从一些网站那里得到的照片
问题:
看似没有问题的爬取代码背后其实有很多问题。该程序只是爬虫的一级应用。例如,我发现浏览器的“检查”功能中明明存在部分html内容,但网页源代码中却没有相关内容。文本匹配的正则表达式部分也存在问题。
在img src属性中,有些图片的url没有协议(如:),有些图片的url没有图片后缀(jpg、png、gif...)。前者导致程序无法解析url,后者导致下载图片的原创命名无法统一采用。
有时匹配的 img src 值将显示为非图像 url。有时从页面获取的内容是 unicode 编码的值。还有一些网站做了反爬虫处理等...
由于本人对java知识、web知识、网络知识和常规知识了解甚少,目前无法解决上述问题。
这些问题导致实际上从网页爬下来的内容只是原创网页的一小部分。
相信这些问题在未来会一一解决。
另外,我在程序中使用了多线程功能,实现了“同时”抓取多个网页的效果。
该程序的源代码如下。
编译环境:
windows jdk 9 的想法
代码:
//Main.java 主类
package
//DownloadPictures.java 爬取图片类
package
//GetTest.java 抓取文本内容类
package
----
程序还有很多问题,还请见谅。