Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 日韩黄色片视频,91精品导航在线观看,中文视频在线观看

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JAVA網(wǎng)絡(luò)編程模擬瀏覽器獲取html源代碼(網(wǎng)絡(luò)爬

          JAVA網(wǎng)絡(luò)編程模擬瀏覽器獲取html源代碼(網(wǎng)絡(luò)爬蟲)

          絡(luò)爬蟲基本思路

          基本思路:由關(guān)鍵字指定的url把所有相關(guān)的html頁(yè)面全抓下來(html即為字符串),然后解析html文本(通常是正則表達(dá)式或者現(xiàn)成工具包如jsoup),提取文本信息,然后把文本信息存儲(chǔ)起來。

          網(wǎng)絡(luò)爬蟲操作步驟

          URL(統(tǒng)一資源定位符)

          下載資源

          分析下載資源(正則表達(dá)式)

          抽取、清洗、儲(chǔ)存

          該文章只會(huì)操作兩步步驟URL和下載html資源。

          網(wǎng)絡(luò)編程小知識(shí)

          URI:(Universal Resource Identifier)統(tǒng)一資源標(biāo)記符,用來標(biāo)記抽象或物理資源的一個(gè)緊湊字符串。

          URL:(Universal Resource Locator)統(tǒng)一資源定位符,一種定位資源的主要訪問機(jī)制的字符串,一個(gè)標(biāo)準(zhǔn)的URL必須包括:protocal(協(xié)議)、host(主機(jī))、port(端口號(hào))、path(路徑)、parameter(參數(shù))、anchor(錨)。

          URN:(Universal Resource Name)統(tǒng)一資源名稱,通過特定命名空間中的唯一名稱或ID來標(biāo)識(shí)資源。

          URL和URN都是URI,但是URI不一定是URL或者URN。

          SEO搜索引擎優(yōu)化

          SEO是搜索引擎優(yōu)化(Search Engine Optimization)的英文縮寫,中文譯為“搜索引擎優(yōu)化”。在了解搜索引擎自然排名機(jī)制的基礎(chǔ)上,對(duì)網(wǎng)站進(jìn)行內(nèi)部及外部的調(diào)整優(yōu)化,改進(jìn)網(wǎng)站在搜索引擎中的關(guān)鍵詞自然排名,獲得更多流量,從而達(dá)成網(wǎng)站銷售及品牌建設(shè)的預(yù)期目標(biāo)。

          網(wǎng)絡(luò)爬蟲技術(shù)是SEO搜索引擎優(yōu)化的基礎(chǔ)(對(duì)網(wǎng)絡(luò)爬蟲感興趣的同學(xué)可以深入研究)

          JAVA中的JDK已經(jīng)對(duì)URL(資源定位符)封裝完畢,使用者只要會(huì)用即可。

          使用JAVA代碼下載網(wǎng)站資源有如下兩種情況:


          該代碼主要是通過URL類的openStream方法來獲取網(wǎng)絡(luò)資源,如果還想了解URL類的信息的同學(xué)可以去看看JDK中URL類的源代碼。

          二、網(wǎng)站不允許外來訪問(模仿瀏覽器使用HTTP協(xié)議交流)代碼如下


          注意事項(xiàng)

          JAVA中的控制臺(tái)儲(chǔ)存空間有限,所以有時(shí)候HTML源代碼會(huì)顯示不全,但你可以通過IO操作來拷貝到文件中去。

          HttpURLConnection類的setRequestProperty方法中的(String key,String value)參數(shù)需要到瀏覽器相應(yīng)網(wǎng)頁(yè)中去拷貝。

          拷貝如下:

          1、進(jìn)入瀏覽器相關(guān)網(wǎng)頁(yè)。

          2、按住F12進(jìn)入devtools。

          3、拷貝Request包中最后一行數(shù)據(jù)。

          4、冒號(hào)前的對(duì)應(yīng)key參數(shù),冒號(hào)后的對(duì)應(yīng)value參數(shù)。

          點(diǎn)擊關(guān)注私信小編“資源”即可獲得

          近在工作中遇到一個(gè)bug,將word轉(zhuǎn)換成html,轉(zhuǎn)換成功之后在瀏覽器中打開其中圖片不顯示,使用img標(biāo)簽,src指定圖片相對(duì)地址又是能顯示的,排除圖片問題。

          網(wǎng)上能搜索到的demo

          打開轉(zhuǎn)碼之后的html代碼發(fā)現(xiàn),生成的是vml圖片標(biāo)簽,這個(gè)在IE9以后就不支持了,更別說現(xiàn)在的主流瀏覽器了。

          生成的html中使用的是vml標(biāo)簽

          將這個(gè)跟大佬分析分析,各種文檔一查,咔咔咔大致分析出問題所在。原來jacob使用的是word本身自帶的功能,相當(dāng)于把word打開另存為html,于是手動(dòng)將word轉(zhuǎn)為html試了一下,果然效果與代碼轉(zhuǎn)換一致,這時(shí)候注意到word另存為時(shí)有一個(gè)web選項(xiàng),里面有個(gè)使用vml渲染圖片默認(rèn)是選中的,去掉這個(gè)選項(xiàng),再次生成,圖片正常顯示。



          到這里基本已經(jīng)確定了問題的解決思路,另存為時(shí)不勾選這個(gè)選項(xiàng),那么問題來了,怎么利用jacob操作另存為時(shí)去掉這個(gè)選項(xiàng)呢,想去搜搜看jacob相關(guān)的文檔,結(jié)果不知道是不是因?yàn)檫@個(gè)很老了,網(wǎng)上大多數(shù)都是demo,根本沒有相關(guān)的文檔可看,Github上也是只言片語(yǔ),根本無從查起。

          jacob github 地址:https://github.com/joval/jacob

          微軟官網(wǎng)文檔

          官方文檔連接:https://docs.microsoft.com/zh-cn/office/vba/api/word.weboptions.relyonvml

          微軟官網(wǎng)查詢相關(guān)文檔,發(fā)現(xiàn)其實(shí)是可以關(guān)閉的,于是代碼變成這樣

          關(guān)閉relyOnVml

          再次運(yùn)行程序,這次轉(zhuǎn)出來的html就能在瀏覽器打開了。

          總結(jié),在這次解決問題的過程中,學(xué)會(huì)了往更深層次去想問題,找對(duì)方向,迎難而上。

          記錄一下這個(gè)問題解決的經(jīng)驗(yàn),也希望能幫到同樣遇到這個(gè)問題的人。

          .Jsoup介紹

            - 官網(wǎng)文檔:https://jsoup.org

            - Jsoup 是一款Java 的HTML解析器,可直接解析某個(gè)URL地址、HTML文本內(nèi)容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數(shù)據(jù)。

            2. Jsoup快速入門

            - 獲取網(wǎng)頁(yè)標(biāo)題

            String url="https://search.jd.com/Search?keyword=手機(jī)&wq=手機(jī)&page=1";
            Document document=Jsoup.connect(url).get();
            String title=document.select("title").text();
            System.out.println(title);
            ```

            - 運(yùn)行效果:手機(jī) - 商品搜索 - 京東

            3. 網(wǎng)站數(shù)據(jù)分析

            3.1 分析網(wǎng)站的訪問地址

            - 以京東商城為例,商品分頁(yè)列表的url地址,需要帶如下幾個(gè)參數(shù),因此,在發(fā)送http請(qǐng)求時(shí),需要攜帶正確的參數(shù)。

            - URL:https://search.jd.com/Search?keyword=手機(jī)&wq=手機(jī)&page=1

            3.2 分析網(wǎng)站的頁(yè)面結(jié)構(gòu)

            - 通過瀏覽器的開發(fā)者工具,可以分析出頁(yè)面中我們需要的html結(jié)構(gòu)。

          <img src="assets/image-20220717171103097.png" alt="image-20220717171103097" style="zoom:67%;" />

          - 可以看出,我們需要的商品數(shù)據(jù),封裝在一個(gè)id=J_goodsList的div標(biāo)簽中,我們可以方便的通過DOM解析出這塊數(shù)據(jù)。

            4. 實(shí)戰(zhàn)實(shí)現(xiàn)過程

            - 獲取第1頁(yè)的商品基本數(shù)據(jù)

          public static void main(String[] args) throws Exception {
              //第1頁(yè)地址
              String url="https://search.jd.com/Search?keyword=手機(jī)&wq=手機(jī)&page=1";
              //發(fā)送http請(qǐng)求
              Document document=Jsoup.connect(url).get();
              //在id=J_goodsList的div下,獲取所有帶有data-sku屬性的li標(biāo)簽
              Elements lis=document.select("div[id=J_goodsList] li[data-sku]");
              lis.forEach(
                      li -> {
                          //獲取商品sku
                          String sku=li.attr("data-sku");
                          //獲取商品name
                          String name=li.select("div[class='p-name p-name-type-2'] a em").text();
                          //獲取商品圖片地址
                          String img=li.select("div[class=p-img] a img[data-lazy-img]").attr("data-lazy-img");
                         
                          System.out.println(String.format("%s, %s, %s", sku, name, img));
                      }
              );
          }

            - 效果預(yù)覽

            - 改造為分頁(yè)獲取


          主站蜘蛛池模板: 一区二区精品在线| 无码人妻精一区二区三区| 无码人妻一区二区三区一| 无码少妇A片一区二区三区| 制服丝袜一区在线| 中文字幕在线精品视频入口一区| 亚洲av无码一区二区三区乱子伦| 国产一区二区三区电影| 97久久精品无码一区二区| 日韩人妻无码一区二区三区| 一区二区三区AV高清免费波多| 久久久久人妻一区二区三区 | 无码人妻精品一区二区三区东京热 | 久久婷婷色一区二区三区| 亚洲男人的天堂一区二区| 一区二区三区影院| 亚洲AV无码一区二三区| 亚洲av无一区二区三区| 日韩人妻一区二区三区免费 | 麻豆一区二区三区蜜桃免费| 国产成人无码aa精品一区| 狠狠综合久久av一区二区| 国产亚洲福利精品一区二区| 日本韩国一区二区三区| 国产精品一区二区香蕉| 日韩一区二区三区免费播放| 欧美成人aaa片一区国产精品| 亚洲欧洲一区二区| 亚无码乱人伦一区二区| 国产微拍精品一区二区| 福利一区二区三区视频午夜观看| 国产精品亚洲一区二区三区在线观看| 亚洲一区二区三区国产精华液| 少妇激情AV一区二区三区| 午夜影院一区二区| 亚洲国产欧美一区二区三区| 福利一区二区在线| 精品国产一区二区三区久久| 91成人爽a毛片一区二区| 国产精品视频一区二区三区经| 天堂va视频一区二区|