java抓取网页内容(有时匹配到的img值还会出现非图片url的情况)

优采云 发布时间: 2021-10-03 03:05

  java抓取网页内容(有时匹配到的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

  ----

  程序还有很多问题,还请见谅。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线