ホームページ  >  記事  >  バックエンド開発  >  Python は 2 つの簡単な手順で気象クローラー コレクターを実装します

Python は 2 つの簡単な手順で気象クローラー コレクターを実装します

高洛峰
高洛峰オリジナル
2016-10-18 14:01:191350ブラウズ

クローラーはとても神秘的だと感じるかもしれませんが、実際には私たちが想像するほど魔法のようなものではありません (もちろん、Google や Baidu のクローラーは複雑で強力です。その力はクローラー自体の強さではなく、背景にあります)データ処理とデータ マイニングのアルゴリズムは非常に強力です)、今日はその謎を明らかにします。笑、Web 天気クローラー プログラムは 2 つの簡単な手順で実装できます。 。 。

簡単に言えば、クローラーは 2 つの部分で構成されます: 1. Web ページのテキスト情報を取得します。 2. 必要なデータを取得するためのデータ分析。

1. Web ページのテキスト情報を取得します。

Python は HTML を取得するのに非常に便利で、urllib ライブラリを利用することで、必要な機能を実現するために必要なコードは数行だけです。

#引入urllib库
import urllib
def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
page.close()
return html

ここで返されるのはWebページのソースコード、つまりHTMLコードです。

それでは、そこから必要な情報をどのように取得するのでしょうか?次に、Web 分析で最も一般的に使用されるツールである正規表現を使用する必要があります。

2. 正規表現などに基づいて必要な内容を取得します。

正規表現を使用する場合は、Web ページ情報の構造を注意深く観察し、正しい正規表現を記述する必要があります。

Python 正規表現の使用も非常に簡単です:

#引入正则表达式库
import re
def getWeather(html):
reg = &#39;<a title=.*?>(.*?)</a>.*?<span>(.*?)</span>.*?<b>(.*?)</b>&#39;
weatherList = re.compile(reg).findall(html)
return weatherList

手順:

ここで、reg は正規表現、html は最初のステップで取得したテキストです。 findall の機能は、通常の一致に一致する HTML 内のすべての文字列を検索し、それらを WeatherList に保存することです。次に、weathereList に出力されたデータを列挙します。

ここでの正規表現 reg については、注意すべき点が 2 つあります。

1つは「(.*?)」です。 () 内の内容が取得する内容である限り、複数の括弧がある場合、findall の各結果にはこれらの括弧内の内容が含まれます。上には都市、最低気温、最高気温に対応する 3 つの括弧があります。

もう一つは「.*?」です。 Python の通常のマッチングはデフォルトで貪欲です。つまり、デフォルトで可能な限り多くの文字列と一致します。最後に疑問符を追加すると、非貪欲モード、つまり可能な限り少数の文字列と一致することを意味します。ここでは、照合する必要がある都市が複数あるため、非貪欲モードを使用する必要があります。そうしないと、照合結果が 1 つだけ残り、不正確になります。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。