beautifulsoupを簡単に使用するために、beautifulsoupは、クローラーの初心者が使用するサードパーティのライブラリであり、簡単な操作と使いやすいコードを備えています。
関数にコードを含め、関数を呼び出して繰り返しクロールを実装します
import requests
from bs4 import BeautifulSoup
# パンダライブラリ、データの保存に使用され、これは基本的なライブラリでもあります
import pandas as pd
# データを取得する
# Webページのソースコードを取得する
def get_data(url):
resp=requests.get(url)
# utf-8はサポートされていません
html=resp.content.decode('gbk')
# 元のhtmlファイルを解析します
# html.パーサーは組み込みのパーサーであり、分析に時間がかかる場合があります
soup=BeautifulSoup(html,'html.parser')
# 見つけることによって_all関数はすべてのtrタグを検索します
tr_list=soup.find_all('tr')
# データを受信するための3つのリストに名前を付けます
dates,conditions,temp=[],[],[]for data in tr_list[1:]:
sub_data=data.text.split()
dates.append(sub_data[0])
conditions.append(''.join(sub_data[1:3]))
temp.append(''.join(sub_data[3:6]))
# データを保存するための空のデータフレームを作成します
_ data=pd.DataFrame()
_ data['日付']=dates
_ data['天候']=conditions
_ data['温度']=temp
# データを返す
return _data
data1=get_data('http://www.tianqihoubao.com/lishi/beijing/month/201101.html')
data2=get_data('http://www.tianqihoubao.com/lishi/beijing/month/201102.html')
data3=get_data('http://www.tianqihoubao.com/lishi/beijing/month/201103.html')
# concatを介して3つのデータフレームを接続し、インデックスをリセットします
df=pd.concat([data1,data2,data3]).reset_index(drop=True)
# データの前処理
# 温度を渡す/ソート
df['最高温度']=df['温度'].str.split('/',expand=True)[0]
df['最低気温']=df['温度'].str.split('/',expand=True)[1]
# マップ機能を使用して、温度の℃を置き換え、それを数値に変換して、後続の分析を容易にします
df['最高温度']=df['最高温度'].map(lambda x:int(x.replace('℃','')))
df['最低気温']=df['最低気温'].map(lambda x:int(x.replace('℃','')))
# 保存する
df.to_csv('./python/クロール気象データ/beijing.csv',index=False,encoding='utf-8')
# 使用時に読む
pd.read_csv('./python/クロール気象データ/beijing.csv')
クローラーに関するすべてのプロジェクトは実用的なプロジェクトです。理論はありません。基本的な理論は簡単に期限切れになるという考えです。教科書を食べるのは少し面倒です。多くのプロジェクトが変更されています。一部のクローラーはpython2に基づいているため、この方法が最適な場合があります。出口。
Recommended Posts