<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          小伙Python爬蟲并自制新聞網站,太好玩了

          共 7094字,需瀏覽 15分鐘

           ·

          2021-03-21 17:02

          點擊上方“Python爬蟲與數(shù)據挖掘”,進行關注

          回復“書籍”即可獲贈Python從入門到進階共10本電子書

          獨憐幽草澗邊生,上有黃鸝深樹鳴。

          家好,我又來了,我是銀牌廚師豆腐!

          我們總是在爬啊爬,爬到了數(shù)據難道只是為了做一個詞云嗎?

          當然不!這次我就利用flask為大家呈現(xiàn)一道小菜。

          Flask是python中一個輕量級web框架,相對于其他web框架來說簡單,適合小白練手。使用Flask+爬蟲,教大家如何實時展示自己爬下來的數(shù)據到網頁上。

          先給大家展示一下這個丑丑的網頁 ↓

          (給個面子,別笑

          演示三個功能

          整個流程就是簡單的三步:

          • 爬取數(shù)據
          • 利用實時爬取數(shù)據生成詞云
          • 利用熱點推薦新聞

          爬蟲部分:

          這次爬蟲主要利用多線程方式爬取新浪新聞+網易新聞所有欄目新聞信息。

          一共14個欄目,兩個網站的頁面信息都是通過ajax加載完成的,請求對應的欄目鏈接后,返回的字符串是這樣的,仔細觀察會發(fā)現(xiàn)我們要看的新聞內容被包含在data_callback里面

          圖2

          是一個列表樣式,

          這時候我們就可以用eval函數(shù)將這個字符串處理成一個列表格式

          def get_wy_teach():
              url = 'https://tech.163.com/special/00097UHL/tech_datalist.js?callback=data_callback'
              headers = {
                  'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
              }

              res = requests.get(url=url, headers=headers)
              # print(res.text)
              data = res.text
              data = eval(data.replace('data_callback(','').replace(data[-1],""))

          然后下面就可以循環(huán)提取出新聞內容了,最后一步就是存儲到我們的mysql數(shù)據庫中

          當我們建立好14個欄目的爬蟲后,再來編寫一個主文件main,利用簡單的多線程方法啟動14個文件并行爬取14個欄目的新聞

          def multi_thread():
              t1 = threading.Thread(target=xzg)
              t2 = threading.Thread(target=xz)

              #......
              
              t13 = threading.Thread(target=wy_hua)
              t14 = threading.Thread(target=wy_chn)

              t1.start()
              t2.start()
              
              #......
              
              t13.start()
              t14.start()

          對了,爬蟲之后我們還是做了詞云的,哈哈哈

          點擊生成今日熱點新聞詞云,靜待片刻

          今日熱點詞匯

          flask部分:

          輔材處理完成,現(xiàn)在我們開始做主菜部分。

          from flask import Flask,render_template,request

          #注冊創(chuàng)建app應用,_name_是python預定義變量
          app = Flask(__name__)

          #跨域請求cors
          from flask_cors import CORS

          CORS(app, resources=r'/*')

          #啟動爬蟲頁
          @app.route('/test', methods=['GET'])
          def mytest():
              main.multi_thread()
              time.sleep(10)
              return '爬取完成~'

          if __name__ == '__main__':
              app.run(debug=True,port=5000)

          • render_template, 用于渲染我們的h5頁面
          • app = Flask(__name__),這個是flask的必寫項,必須先定義模塊名,用于設置路由路徑(轉接4)
          • cors跨域請求,一般用于ajax請求,CORS(app, resources=r'/*')定義app路由中所有路徑都適用于跨域請求
          • @app.route('/test'),當你想使用mytest功能時候,設置了/test作用該函數(shù)的訪問路徑。例:http://49.233.23.230:5000/test
          • app.run(debug=True,port=5000),最后就是指定監(jiān)聽地址端口為 5000,debug=True是調試環(huán)境,用于生產環(huán)境時可更改為Flase。

          這樣一個個小小的Flask頁面接口就完成了

          接口寫好了,下面我們來搞個h5頁面,我們首先來建立一個簡單hmtl文件(舉例新聞推薦頁面)

          <!DOCTYPE html>
          <html lang="en">
          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          </head>
          <body>
          <div align="" class="img">
              <h1>今日新聞推薦</h1>
              <div class="img">
                  <ul>
                    <li> <a href="{{data[0][1]}}">{{data[0][0]}}</a></li>
                    <li> <a href="{{data[1][1]}}">{{data[1][0]}}</a></li>
                    <li> <a href="{{data[2][1]}}">{{data[2][0]}}</a></li>
                    <li> <a href="{{data[3][1]}}">{{data[3][0]}}</a></li>
                    <li> <a href="{{data[4][1]}}">{{data[4][0]}}</a></li>
                    <li> <a href="{{data[5][1]}}">{{data[5][0]}}</a></li>
                    <li> <a href="{{data[6][1]}}">{{data[6][0]}}</a></li>
                    <li> <a href="{{data[7][1]}}">{{data[7][0]}}</a></li>
                    <li> <a href="{{data[8][1]}}">{{data[8][0]}}</a></li>
                    <li> <a href="{{data[9][1]}}">{{data[9][0]}}</a></li>
                    <li> <a href="{{data[10][1]}}">{{data[10][0]}}</a></li>
                    <li> <a href="{{data[11][1]}}">{{data[11][0]}}</a></li>
                    <li> <a href="{{data[12][1]}}">{{data[12][0]}}</a></li>
                    <li> <a href="{{data[13][1]}}">{{data[13][0]}}</a></li>
                    <li> <a href="{{data[14][1]}}">{{data[14][0]}}</a></li>
                    <li> <a href="{{data[15][1]}}">{{data[15][0]}}</a></li>
                    <li> <a href="{{data[16][1]}}">{{data[16][0]}}</a></li>
                    <li> <a href="{{data[17][1]}}">{{data[17][0]}}</a></li>
                    <li> <a href="{{data[18][1]}}">{{data[18][0]}}</a></li>
                    <li> <a href="{{data[19][1]}}">{{data[19][0]}}</a></li>

                  </ul>
              </div>
              <div class="logo-img">

              </div>
          </div>

          我們將從數(shù)據庫中獲取到的數(shù)據傳入到h5文件

          #新聞推薦
          @app.route('/news')
          def news_list():
              data = get_mysql()
              
              return render_template('index4.html', data=data)

          復制粘貼20個li方便大家理解我設置今日推薦新聞條數(shù)是20條,

          你也可以通過自己喜愛算法從數(shù)據庫選擇20條新聞推送的網頁

          刷新新聞與查看新聞

          到這,一個簡陋的 Flask 網站就完成了,是不是很簡單。

          Flask 是個小巧、靈活的web框架,可以讓自己決定定制哪些功能,靈活定制組件,非常適用于小型網站。

          結語:(網站想要漂亮,還是要學一下h5,別學我)

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點贊,留言,轉發(fā),轉載,感謝大家的相伴與支持

          想加入Python學習群請在后臺回復【入群

          萬水千山總是情,點個【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 78
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产女生被男生操网站 | 中日韩免费视频 | 欧美精品偷拍 | 麻豆蜜桃av | 日韩黄色片网站 |