0 8爬虫類は、データベースに格納された要求/ pymysqlとbeautifulsoup4クロールリンクやWikipediaのエントリを使用することを学ぶようになりました

0 8爬虫類は、データベースに格納されているクロールリンクやWikipediaのエントリbeautifulsoup4要求を学び、使用することを始めました

Pythonは、データベースに格納され、要求とbeautifulsoup4クロールリンクやWikipediaのエントリを使用しています

参照文献:

https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

#インストールbeautifulsoup4

(pytools)D:\ pythonの\ pytools>ピップbeautifulsoup4をインストール

MySQLのモジュールをインストールします。

pymysqlアドレス:https://github.com/PyMySQL/PyMySQL

 

クロールWikipediaのエントリ

#のコード= UTF-8 

から BS4 インポートBeautifulSoupの
 インポート要求が
 インポート


DEF spider_wike():
    URL = " https://en.wikipedia.org/wiki/Main_Page " 
    ヘッダー = { " ユーザエージェント"" はMozilla / 5.0( Windows NTの10.0; Win64の、のx64)のAppleWebKit / 537.36(KHTML、ヤモリ等)クローム/ 75.0.3770.100サファリ/ 537.36 " } 
    RESP = requests.get(URL、ヘッダー= ヘッダ)
     将响应数据转换为UTF-8编码 
    RESP .encoding = ' UTF-8 '

    html_doc = resp.text 

    スープ = BeautifulSoup(html_docは、" html.parser " #は、href属性をウィキがわかっは、タグで始まる 
    list_urls soup.find_all =(" A "、re.compileのHREF =(" / ^ /ウィキ" ))
    印刷(list_urls) 

    名に対応するすべてのエントリとのURLの出力
    のための URL list_urls:
         #1 フィルタアウトのURLの.JPGまたは.JPG最後
        のIF  ない re.search(R "\(JPG | JPG)"、URL [ " HREF " ]):
            #の項目を加えたURL 
            スティングは、GET_TEXTを取得することができます()の内容のラベルをすべて取得することができます
            印刷(url.get_textを()、" <------> "" HTTPS://en.wikipedia。 ORG " + URL [ " HREF " ])


IF  __name__ == ' __main__ ' 
    spider_wike()

#データベースにWikipediaのエントリリンク

#のコーディング= UTF-8 

から BS4の輸入BeautifulSoupの
 インポート要求が
 インポートインポートpymysql.cursors 


''」 
    #环境准备
    ピップpymysqlインストール
    データベースwikiurlのcharset = utf8mb4を作成します。
    wikiurlを使用します。
    テーブルのURL(ID int型主キーAUTO_INCREMENT、たURLNameのVARCHAR(255)、urlhrefのVARCHAR(1000))を作成します。
''」
URL = " https://en.wikipedia.org/wiki/Main_Page " 
ヘッダ = { " のUser-Agent ""Mozilla / 5.0(Windows NTの10.0; Win64の、x64-)のAppleWebKit / 537.36(ヤモリ様KHTML)クローム/ 75.0.3770.100サファリ/ 537.36 " } 
RESP = requests.get(URL、ヘッダー= ヘッダ)
 #は、UTFに応答データを変換-8コード 
resp.encoding = ' UTF-8 ' 

html_doc = resp.text 

スープ BeautifulSoup(html_doc = " html.parserを" #は、href属性がタグで始まるWikiへ見出さ 
soup.find_all =(list_urls " A "、 = re.compile HREF(" ^ /ウィキ/ " ))
印刷(list_urls) 

名前とURLに対応するすべてのエントリの出力
以下のための URL list_urls:
     #1 のURLの.JPGまたは.JPGエンドアウトフィルタ
    のIF  ない re.search(R "\(JPG | JPG)"、URL [ " HREF " ]):
        エントリに加えURLの
        #のスティングのみすべての内容のラベルの取得)(、GET_TEXTを取得し
        印刷を、url.get_text()(" <------> "" https://en.wikipedia.org " + URL [ " HREF " ] )

        接続 = pymysql.connect(ホスト= ' ローカルホスト' 
                                     ユーザー = ' ルート' 
                                     パスワード = ' ルート' 
                                     DB = ' wikiurl ' 
                                     文字セット = ' utf8mb4 ' のtry #は、ポインタを答える取得
            カーソルとしてconnection.cursor(と):
                SQL文の作成 
                SQL = " INSERT INTO` URLを( `` urlname`、 `urlhref`)値(%のS、%のS)

                SQL文の実行
                cursor.execute(SQL、(url.get_text()、" https://en.wikipedia.org " + URL [ " HREF " ]))
                提交数据
                connection.commit()
         最後に
            connection.close()

 

#は、データベースのエントリから情報を読み取り、

コーディング= UTF-8 

インポートpymysql 


DEF get_conn():
    接続 = pymysql.connect(ホスト= ' はlocalhost ' 
                                 ユーザ = ' ルート' 
                                 パスワード = ' ルート' 
                                 DB = ' wikiurl ' 
                                 文字セット = ' utf8mb4 ' リターン接続


DEF get_wiki_data(): 
    CONN =get_conn()

    SQL = " urlname`` SELECT、` urlhref`のURLから" 
    CUR = conn.cursor()
    は、取得したレコードの合計数 
    COUNT = cur.execute(SQL)
     を印刷(COUNT) 


    すべてのデータを取得
    urllists = CUR .fetchall() 
    指定された項目データ取得
    #1 =(3)urllistsのcur.fetchmanyを
    #1
     urllistsにURL用:
    #1      印刷([1] URL [0]、 '<--->'、URLの)

    #は、データを取得します 
    =リンクcur.fetchone()
     印刷(リンク)

    #は、接続クローズ
    はconn.closeを()


デフget_data():
    CONN = get_conn()

    してみてください
        CURとしてconn.cursor()で:
            SQL = " urlname`、` id`がNULLでない`のURLからurlhref`は`選択し、" 
            カウント = cur.execute(SQL)を
             印刷(カウント)

            查询所有数据
            #1 データ= cur.fetchall() 
            印刷(データ)

            查询指定条目数据 
            結果= cur.fetchmany(サイズ= 5 プリント(結果)
     最後に
        はconn.close()


の場合 __name__ = = " __main__ ' get_wiki_data() 
    get_data()

 

おすすめ

転載: www.cnblogs.com/reblue520/p/11200086.html