目的
そして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(行) 印刷( '終了')