استخدم Java للاستيلاء على جميع الصور على صفحة الويب:
استخدم تعبيرين عاديين:
1. مطابقة العلامة IMG العادية في html: <img.*src = (.*؟) [^>]*؟
2. تطابق مسار HTTP في SRC في علامة IMG: http:/"؟ (.*؟) (/" |> | // s+)
ينجز:
حزمة org.swinglife.main ؛ استيراد java.io.file ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.inputstream ؛ استيراد java.net.url ؛ استيراد java.net.urlconnection ؛ استيراد java.util.arraylist ؛ استيراد java.util.list ؛ استيراد java.util.regex.matcher ؛ استيراد java.util.regex.pattern ؛ /**** صور شبكة Java Crawl* Author SwingLife**/ClassImage public {// العنوان الخاص بالسلسلة الثابتة الخاصة url = "http://www.csdn.net" ؛ // ترميز السلسلة النهائية الثابتة الخاصة = "UTF-8" ؛ // احصل على علامة IMG العادية الخاصة بسلسلة Final Final Imgurl_reg = "<img.*src = (.*؟) [^>]*؟>" ؛ // احصل على مسار SRC منتظم Static Final String IMGSRC_REG = "http:/"؟ (.*؟) (/"|> | // s+)" ؛ static static void main (string [] args) يلقي الاستثناء {catchimage cm = new catchimage () ؛ // احصل على سلسلة محتوى النص HTML HTML = CM.GethTML (url) ؛ // احصل على قائمة علامة الصورة <string> imgurl = cm.getImageurl (html) ؛ // احصل على قائمة عناوين الصورة SRC <Tring> imgsrc = cm.getImagesRc (imgurl) ؛ // قم بتنزيل Image CM.Download (IMGSRC) ؛ } / *** * احصل على html content * * param url * return * @throws استثناء * / سلسلة خاصة gethtml (url string) رمي الاستثناء {url uri = url new (url) ؛ اتصال urlConnection = uri.openconnection () ؛ inputStream في = connection.getInputStream () ؛ Byte [] buf = new byte [1024] ؛ طول int = 0 ؛ StringBuffer SB = New StringBuffer () ؛ بينما ((طول = in.read (buf ، 0 ، buf.length))> 0) {sb.append (سلسلة جديدة (buf ، ecoding)) ؛ } in.close () ؛ إرجاع sb.tostring () ؛ } / *** * احصل على عنوان ImageUrl * * param html * @RETURN * / قائمة خاصة <string> getImageUrl (String html) {matcher matcher = pattern.compile (imgurl_reg) .Matcher (html) ؛ قائمة <Tring> listimgurl = new ArrayList <String> () ؛ بينما (matcher.find ()) {listimgurl.add (matcher.group ()) ؛ } return listimgurl ؛ } / *** * احصل على عنوان الصور * * param listImageurl * @return * / قائمة خاصة <string> getImagesRc (قائمة <Tring> listImageurl) {list <string> listimgsrc = new ArrayList <String> () ؛ لـ (صورة السلسلة: listimageurl) {matcher matcher = pattern.compile (imgsrc_reg) .Matcher (Image) ؛ بينما (matcher.find ()) {listimgsrc.add (matcher.group (). substring (0 ، matcher.group (). length () - 1)) ؛ }} return listimgsrc ؛ }/**** تنزيل الصورة** param listimgsrc*/private void تنزيل (قائمة <string> listimgsrc) {try {for (url url: listimgsrc) {String imageName = url.substring (url.lastindexof ("/") + 1 ، url.length ()) ؛ url uri = url new url (url) ؛ inputStream في = uri.openstream () ؛ fileOutputStream fo = new FileOutputStream (ملف جديد (ImageName)) ؛ Byte [] buf = new byte [1024] ؛ طول int = 0 ؛ System.out.println ("ابدأ تنزيل:" + url) ؛ بينما ((طول = in.read (buf ، 0 ، buf.length))! = -1) {fo.write (buf ، 0 ، length) ؛ } in.close () ؛ fo.close () ؛ System.out.println (ImageName + "Download Complete") ؛ }} catch (استثناء e) {system.out.println ("تنزيل فشل") ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.