1. 程式人生 > >Java爬蟲--利用HttpClient和Jsoup爬取部落格資料並存入資料庫

Java爬蟲--利用HttpClient和Jsoup爬取部落格資料並存入資料庫

  由於今日頭條等頭條類產品的出現,以今日頭條為代表所使用的爬蟲技術正在逐漸火熱,在爬蟲領域具有良好效能和較好效果的Python在最近一年的時間裡逐漸火熱起來,同時因為Python良好的資料分析和機器學習的能力,Python的應用越來越廣泛。不過,今天我們要提到的是基於java 的簡單爬蟲,為使用java作為開發語言的人做一個參考。

爬蟲實現

HttpClient 是 Apache Jakarta Common 下的子專案,可以用來提供高效的、最新的、功能豐富的支援 HTTP 協議的客戶端程式設計工具包,並且它支援 HTTP 協議最新的版本和建議。

jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文字內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似於jQuery的操作方法來取出和操作資料。

httpClient操作程式碼,值得注意的是,我們將html存入資料庫的時候,最好將資料庫對應的欄位設定為text型別或者是longtext型別。存入的時候使用setString即可。否則可能 出現。Data too long for row錯誤。

public class pachongMain {

    public static void main(String[] args) throws Exception {
        for (int j = 2000; j >0; j = j - 1) {
            CloseableHttpClient client = HttpClients.createDefault();
            HttpGet get
= new HttpGet("http://www.bysocket.com/?p=" + j); HttpResponse response = client.execute(get); // System.out.println(response.getStatusLine().getStatusCode()); if (response.getStatusLine().getStatusCode() !=200 ) { continue ; } HttpEntity entity = response.getEntity(); String content = EntityUtils.toString(entity, "utf-8"
); // 使用Jsoup解析網頁 Document doc = Jsoup.parse(content); Elements element3 = doc.select("h1[class=entry-title]"); String title = element3.text(); Elements element2 = doc.select("div[class=entry-content]"); String article =element2.html(); new StoreData().store(j,article,title); } } }

資料儲存類

public class StoreData {
    public void store(Integer id, String content, String  title) throws Exception {
        String driverClassName = "com.mysql.jdbc.Driver";

        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8";

        String username = "root";

        String password = "123456";
        // 載入驅動類
        Class.forName(driverClassName);
        Connection con = (Connection) DriverManager.getConnection(url, username, password);
        // 建立sql語句模板
        String sql = "INSERT blog VALUES(?,?,?)";
        // 建立一個宣告物件
        PreparedStatement pst = (PreparedStatement) con.prepareStatement(sql);
        // 用迴圈將資料新增到sql模板中
            pst.setInt(1, id);
            pst.setString(2, content);
            //pst.set
            pst.setString(3, title);

        pst.addBatch();
        // 將sql語句傳送到mysql上
        int[] res = pst.executeBatch();
        System.out.println(res);
        pst.close();
    }
}

爬取的效果:
這裡寫圖片描述

但是隻是這種普通的爬取會出現請求超時的情況,
出現這種請求頭設定有誤,使用瀏覽器,分析請求資訊,對於url請求,將請求頭資訊新增到java的程式中即可。

相關推薦

Java爬蟲--利用HttpClientJsoup部落資料存入資料庫

  由於今日頭條等頭條類產品的出現,以今日頭條為代表所使用的爬蟲技術正在逐漸火熱,在爬蟲領域具有良好效能和較好效果的Python在最近一年的時間裡逐漸火熱起來,同時因為Python良好的資料分析和機器學習的能力,Python的應用越來越廣泛。不過,今天我們要提到

爬蟲學習之11:豆瓣電影TOP250存入資料庫

     本次實驗主要測試使用PyMySQL庫寫資料進MySQL,爬取資料使用XPATH和正則表示式,在很多場合可以用XPATH提取資料,但有些資料項在網頁中沒有明顯特徵,用正則表示式反而反而更輕鬆獲取資料。直接上程式碼:from lxml import etree impo

java爬蟲問題二: 使用jsoup數據class選擇器中空格多選擇怎麽解決

凱哥Java問題描述: 在使用jsoup爬取其他網站數據的時候,發現class是帶空格的多選擇,如果直接使用doc.getElementsByClass(“class的值”),這種方法獲取不到想要的數據。 爬取網站頁面結構如下: 其中文章列表的div為:<div class="am-cf in

使用java開源工具httpClientjsoup解析網頁資料

  今天做專案的時候遇到這樣一個需求,需要在網頁上展示今日黃曆資訊,資料格式如下   公曆時間:2016年04月11日 星期一  農曆時間:猴年三月初五  天干地支:丙申年 壬辰月 癸亥日  宜:求子 祈福 開光 祭祀 安床  忌:玉堂(黃道)危日,忌出行  主要包括公曆/農曆日期,以及忌宜資訊的等。但是手

python 批量部落資料(僅供學習)

#coding:utf-8 import urllib import time import os page=1 while page<=7: url=['']*50

Java爬蟲學習:利用HttpClientJsoup庫實現簡單的Java爬蟲程式

利用HttpClient和Jsoup庫實現簡單的Java爬蟲程式 HttpClient簡介 HttpClient是Apache Jakarta Common下的子專案,可以用來提供高效的、最新的、功能豐富的支援HTTP協議的客戶端程式設計工具包,並且它支

java爬蟲一(分析要數據的網站)

java爬蟲一、獲取你想要抓取的網站地址:http://www.zhaopin.com/然後打開控制臺,F12,打開。我用的是Chrome瀏覽器,跟個人更喜歡Chrome的控制臺字體。找到搜索欄對應的html標簽:http://sou.zhaopin.com/jobs/searchresult.ashx?jl

Java爬蟲學習《一、網頁URL》

導包,如果是用的maven,新增依賴: <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons

Python爬蟲-利用正則表示式貓眼電影

利用正則來爬去貓眼電影 =================================== ===================================================== 1 ''' 2 利用正則來爬去貓眼電影 3 1. url: http://maoya

利用BeautifulSoupXpath趕集網北京二手房房價資訊

    利用BeautifulSoup和Xpath爬取趕集網北京二手房房價資訊 文章開始把我喜歡的這句話送個大家:這個世界上還有什麼比自己寫的程式碼執行在一億人的電腦上更酷的事情嗎,如果有那就是讓這個數字再擴大十倍! 1.BeautifulSoup實現 #!/usr/

Python爬蟲——4.4爬蟲案例——requestsxpath招聘網站資訊

# -*-coding:utf-8 -*- ''' 使用requests模組進行資料採集,XPath進行資料篩選''' import requests from lxml import etree #

Jsoup 頁面的資料 理解HTTP訊息頭

推薦一本書:黑客攻防技術寶典.Web實戰篇  ;       順便留下一個疑問:是否能通過jsoup大量併發訪問web或者小型域名伺服器,使其癱瘓?其實用jsoup熟悉的朋友可以用它解析url來幹一件很無恥的事(原始碼保密)。呵呵,接下來簡單的介紹下JSOUP。       jsoup 是一款基於J

HtmlUnit、httpclientjsoup網頁資訊解析

1.爬取頁面效果圖 點選"百度一下"按鈕前頁面 點選"百度一下"按鈕後頁面 天涯社群登入頁面 登入進去之後個人主頁 二、具體實現程式碼 HtmlUnit(底層也

HtmlUnit java爬蟲入門 真實案例講解 電商網站資料

最近利用空閒時間幫朋友做了個爬取幾個電商網站的資料的小程式 使用的是htmlUnit 自我感覺htmlUnit爬取的速度和穩定性還是很不錯的 所以寫一篇博文介紹下htmlUnit的使用相關 也算記錄一下 這是該網站的主頁面 具體的思路是 獲取商品所在的div 通過div獲

Java爬蟲系列之實戰:酷狗音樂網 TOP500 的歌曲(附原始碼)

  在前面分享的兩篇隨筆中分別介紹了HttpClient和Jsoup以及簡單的程式碼案例: Java爬蟲系列二:使用HttpClient抓取頁面HTML Java爬蟲系列三:使用Jsoup解析HTML 今天就來實戰下,用他們來抓取酷狗音樂網上的 Top500排行榜音樂。接下來的程式碼

使用Tornado協程部落園文章

Python3.5後 Tornado官方建議使用async和await的方式實現非同步程式,嘗試了下使用Tornado和協程爬取部落格園的文章並使用peewee_async非同步寫入MySQL資料庫。 一. 部落格園文章抓取測試: 這裡我以我自己的一篇文章詳情作為測試url,https://www.cnb

Python爬蟲部落園作業

要求 第一部分: 請分析作業頁面,爬取已提交作業資訊,並生成已提交作業名單,儲存為英文逗號分隔的csv檔案。檔名為:hwlist.csv 。 檔案內容範例如下形式: 學號,姓名,作業標題,作業提交時間,作業URL 20194010101,張三,羊車門作業,2018-1

Jsouptable頁面資料

昨天接到一個任務需要爬取一個網頁的table資料,因為第一次接觸有些打怵。查詢資料尋找解決的方法。 查到不少資料都在用jsoup . 需要下載jsoup-1.8.1.jar 包 jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文字

簡單程式碼部落超連結的文字,並且去除字元“原”空格

        這裡給大家分享一個怎麼用Python爬取超連結的文字,並且能夠去除字元“原“和前後空格、空行等等。這個程式碼不多,而且非常簡單。我這裡用的是Python3,版本不和的可以調整一下,這個程式碼還是很好理解的。        接下來我給大家分享爬取我的部落格超連結

利用scrapy輕鬆招聘網站資訊存入MySQL

前言 Scrapy版本:1.4; Python版本:3.6; OS:win10; 本文完整專案程式碼:完整示例; 本文目標: 通過爬取騰訊招聘網站招聘崗位,熟悉scrapy,並掌握資料庫儲存操作; 一、準備工作 ♣   基礎工作 首先你要安裝S