クロールのpythonウェブクローラ(7)説明静的データ

目的

そしてhttp://seputu.com/ CSVファイルをクロールデータを保存します

インポートライブラリ

データを抽出するために、HTMLページの解析のソースコードなどを解析するためにlxmlの。いくつかの参照:https://www.cnblogs.com/zhangxinqi/p/9210211.html

ウェブページのリクエストを要求

文字エンコード形式のページを決定するためのchardet

CSVファイルは、テキストを格納するために使用されます。

正規表現のために再

lxmlのインポートetreeのからの
インポート要求
chardetインポート
インポートのCSV 
インポート再

ページを取得します

request.getに頭の中にWebページを生成するには、ブラウザをシミュレートすることができます。どこのページの先頭には、ブラウザのコンソールは次のネットワークに見ることができます。

user_agentの= 'のMozilla / 5.0(Windows NTの10.0; WOW64)のAppleWebKit / 537.36(ヤモリ様KHTML)クローム/ 58.0.3029.110サファリ/ 537.36 SE 2.X MetaSr 1.0' 
ヘッダー= { 'のUser-Agent'のuser_agent} 
R = requests.get( 'http://seputu.com/',headers=headers)

分析およびトランスコーディング

r.encoding = chardet.detect(r.content)[ 'エンコーディング']

パースウェブサイト

HTML = etree.HTML(r.text)

情報ページを抽出

ブラウザは、抽出HTMLテキストコンテンツを完了するために、要素を見直すことで、抽出されるラベルを見つけるために、対応するWebサイトを開きます。

ここでは、コンテンツh2_title、HREF、タイトルコンテンツを抽出します。タイトル正規表現パケット、およびデータ抽出による。

なお:Pythonの正規表現の一部で、サポートされていない発生するエラーを回避するためにグループ化スキームを使用して、広範なアサーション構文のゼロ一部を!

次のコードは間違って行くでしょう。

再読み込み
box_title = '[2012年5月23日21時14分42秒]トゥーム記事の真実新年の
パターン= re.compile(R&LT '(?<= \ [。* \] \ S)。*')
結果1 = re.search(パターン、box_title)

csvファイルを作成するための2次元データストレージの行。

div_mulus = html.xpath(」= "MULU" .//*[@クラス] ')
行= [] 
div_mulusでdiv_mulu用:
    div_h2 = div_mulu.xpath(' ./のdiv [クラス@ = "MULU-タイトル"] /センター/ H2 /テキスト() ')
    場合でlen(div_h2)> 0:
        h2_title = div_h2 [0] 
        A_S = div_mulu.xpath(' ./のdiv [クラス@ = "ボックス"] / UL /リチウム/ A ')
        A_Sにするため:
            HREF = a.xpath(」./@ HREF ')[0] 
            box_title = a.xpath(' ./@表題')[0] 
            パターン= re.compile(R' \ *はS \ [ (。*)\] \秒+(。*) ')
            結果1 = re.search(パターン、box_title)
            rows.append([h2_title、result1.group(2)、HREF、result1.group(1)])
            パス
        パス
    パス

データストレージ

前に一次元、二次元データを完了するために、書き込み方法で、W機関によって行を相手にヘッダ次元データを、二次元データを確立することは書かれています

最終的な出力によって、正常完了フラグ。

ヘッダー= [ 'タイトル'、 'real_title'、 'のhref'、 '日付'] 
Fとしてオープンと( 'text.csv'、 'W'):
    f_csv = csv.writer(F)
    f_csv.writerow(ヘッダ)
    f_csv.writerows(行)
印刷( '終了')

  

 

おすすめ

転載: www.cnblogs.com/bai2018/p/10988788.html