ボーイパイソンクローラーと自作のニュースウェブサイト、とても楽しい!ネチズン:1日遊べる

私たちは常にクロールとクロールを行っていますが、データにアクセスするとき、それは単なるワードクラウドでしょうか?

もちろん違います!今回はフラスコを使っておかずをみんなにプレゼントします。

Flaskは、Pythonの軽量Webフレームワークであり、他のWebフレームワークよりも単純で、初心者に適しています。Flask +クローラーを使用して、クロールされたデータをWebページにリアルタイムで表示する方法を学習します。

最初にこの醜いウェブページをお見せしましょう↓

(顔を出して、笑わないでください)

 

 

3つの機能を実演する

プロセス全体は、3つの簡単なステップです。

  • クロールデータ
  • リアルタイムのクロールデータを使用してワードクラウドを生成する
  • ホットスポットを使用してニュースを推奨する

爬虫類の部分:

このクローラーは、主にマルチスレッド方式を使用して、Sina News + NeteaseNewsのすべてのニュース情報をクロールします。

合計14列あります。2つのウェブサイトのページ情報はajaxを介して読み込まれます。対応する列リンクをリクエストすると、返される文字列は次のようになります。よく見ると、見たいニュースコンテンツが見つかります。 data_callbackに含まれています。

図2

リストスタイルです、

現時点では、eval関数を使用して、この文字列をリスト形式に処理できます。

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],""))

次に、ニュースコンテンツを以下のループで抽出できます。最後のステップは、それをmysqlデータベースに保存することです。

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()

ちなみに、クローラーの後、私たちはまだワードクラウドを作りました、ハハハ

クリックして、今日のホットなニュースワードクラウドを生成します。しばらくお待ちください

 

今日のホットな語彙

多くの人がPythonを学び、どこから始めればよいのかわかりません。
多くの人がPythonを学び、基本的な文法を習得した後、どこから始めればよいかわかりません。
事例研究を行った多くの人々は、より高度な知識を学ぶ方法を知りません。
したがって、これら3つのタイプの人々のために、ビデオチュートリアル、電子書籍、およびコースのソースコードを無料で受け取ることができる優れた学習プラットフォームを提供します。
QQグループ:705933274

フラスコ部分:

補助材料を加工し、メインコースパーツの製作を開始します。

from flask import Flask,render_template,request

#注册创建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)
  • 一般的にAjaxリクエストに使用されるCorsクロスドメインリクエスト、CORS(app、resources = r '/ *')は、アプリルーティングのすべてのパスがクロスドメインリクエストに適用可能であることを定義します
  • @ app.route( '/ test')、mytest関数を使用する場合は、/ testのアクセスパスを関数に設定します。例:http://49.233.23.230:5000 / test
  • app.run(debug = True、port = 5000)、最後はリスニングアドレスポートを5000として指定することです。debug= Trueはデバッグ環境であり、実稼働環境で使用する場合は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>

データベースから取得したデータをh5ファイルに転送します

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

誰もが理解しやすいように20liをコピー&ペーストします。今日のおすすめニュースの数を20に設定しました。

お気に入りのアルゴリズムを使用して、データベースから20のニュースフィードWebページを選択することもできます。

ニュースを更新してニュースを見る

この時点で、単純なFlask Webサイトが完成しましたが、非常に単純ですか?

Flaskは、コンポーネントをカスタマイズおよび柔軟にカスタマイズする機能を決定できる、小さくて柔軟なWebフレームワークであり、小さなWebサイトに非常に適しています。

結論:(美しいウェブサイトが必要な場合でも、h5を学ぶ必要があります。私から学ばないでください)

自分で作成したPython学習グループ:705933274を引き続きお勧めします。全員がPythonを学習しています。Pythonを学習したい、または学習している場合は、ぜひ参加してください。誰もがソフトウェア開発パーティーであり、最新のPythonの高度な資料のコピーや、2021年に私が編集したゼロベースの教育など、随時(Pythonソフトウェア開発に関連するもののみ)。高度でPythonに興味のある友人を歓迎します。

 

おすすめ

転載: blog.csdn.net/m0_55479420/article/details/115026380