著者:qyan.li
日付:2022.5.29
トピック: Python は Web クローラーの助けを借りて天気クエリ システムを実装します
1つ、前に書かれています:
~~~~~~ 最近、このコースでは単純な人間とコンピューターの対話システムを実装する必要があります. 以前にpython ベースのインテリジェント チャット ロボットを実装したことがあるので、次のリンクを参照してください: (13 メッセージ) 「機械学習」に基づくインテリジェント チャット ロボット—python 実装(1 )_隣人の李雪昌のブログ - CSDN blog_python トレーニング チャット ロボット. 今回も同様のインテリジェントインタラクティブシステムを実装する予定ですが、本体は変わります功能性
:Pythonに基づいた機能ロボットを実装します。つまり、チャットだけでなく、ユーザー入力に応じてコマンドを理解し、対応する操作を実行できます。
~~~~~~ このシステムをシリーズとして更新します. このブログ投稿は天气查询
システムの実装を更新し、残りは次のように連続して更新されます:
- WeChat または QQ メッセージを自動的に送信する
- 指定した音楽再生とWebコンテンツの自動取得を自動で実現
- メールを自動送信する
2. 天気照会システム
~~~~~~ ウェザー クエリ システムの実現原理とアイデアは比較的単純で、主に Web クローラーの技術を使用しています。都市の名前でウェブサイトを構築し、ウェブページのソースコードを分析し、対象都市の気象情報を取得し、インテリジェントな気象クエリシステムを完成させます。
~~~~~~ 天気クエリ コードの本体は、Web ページ コンテンツの分析です. Web クローラーのコードについては、この記事では詳しく説明しません. 一方で, 最近試験を見直しており、時間がきついです.子供たちを誤解させる。フォローアップの関連知識が改善された後、いくつかの関連するブログ記事が公開され、クローラーの関連技術が紹介されます。
~~~~~~ いつものように、参考用とアプリケーション用に最初にコードを貼り付けます。
# -*-coding = utf-8-*-
# Author:qyan.li
# Date:2022/5/12 18:30
# Topic:爬虫返回天气信息(class实现)
import urllib.request,urllib.error
from bs4 import BeautifulSoup
import re
class WeatherInfo():
def __init__(self,cityName):
self.city = cityName
self.url = r'https://www.tianqi.com/' + str(cityName) + r'/'
self.findTime = re.compile(r'<dd class="week">(.*?)</dd>')
self.html = None
self.WeatherInformation = ''
def askURL(self):
# 模拟浏览器头部信息(浏览器伪装,不会被设别为爬虫程序)
# 用户代理,可以接受什么类型的返回文件
head = {
'User-Agent': # 中间不能存在任何空格,包括大小写的相关问题
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0'
}
request = urllib.request.Request(self.url, headers=head) # 携带头部信息访问url
html = ''
try:
responseInfo = urllib.request.urlopen(request) # responseInfo包含网页的基本信息
html = responseInfo.read().decode('utf-8') # 防止格式错误
# print(html)
except urllib.error.URLError as e:
if hasattr(e, 'code'):
print(e.code)
if hasattr(e, 'reason'):
print(e.reason)
self.html = html
def getData(self):
soup = BeautifulSoup(self.html, 'lxml')
item = soup.find('div', class_="left")
# 分别获得'湿度','天气','空气'信息
ShiDuItem = item.find('dd', class_='shidu')
WeatherItem = item.find('dd', class_='weather')
AirItem = item.find('dd', class_='kongqi')
item = str(item)
# 获得时间信息
Time = str(re.findall(self.findTime, item)[0]).split('\u3000')[0]
# print(Time)
# 获得湿度信息
ShiduInfo = ''
for item in ShiDuItem.find_all('b'):
ShiduInfo = ShiduInfo + str(item.string)
ShiduInfo = ShiduInfo + ' '
# 获得天气信息
temperature = WeatherItem.find('p', class_='now').find('b').string + '摄氏度'
condition = WeatherItem.find('span').find('b').string
TempCondition = temperature + condition
# 获得空气信息
AirCondition = AirItem.find('h5').string
PM = AirItem.find('h6').string
AirPM = AirCondition + PM
self.WeatherInformation = Time + ' ' + ShiduInfo + '温度' +TempCondition + AirPM
def startWeather(self):
self.askURL()
self.getData()
if __name__ == '__main__':
WeatherItem = WeatherInfo('beijing')
WeatherItem.startWeather()
print(WeatherItem.WeatherInformation)
コードのより重要な点を説明します。
-
getData()
機能で取得した内容は変更可能で、取得した内容は自分で調整可能 -
このコードは、その日の対象都市の天気情報しか取得できません. 動的に時刻を調整したい場合は、コードを自分で変更できます.
-
後の段階で音声ヒューマン コンピュータ インタラクションを実現するには、音声認識の都市名をピンインに変換して Web サイトを構築する必要があり
python
ますxpinyin
。from xpinyin import Pinyin P = Pinyin() cityName = '北京' cityName_pinyin = P.get_pinyin(cityName,'') print(cityName_pinyin)
-
コード呼び出しメソッドはターゲット フォルダーに直接配置でき、クラスは
py
ファイルにインポートできます。WeatherClass
from WeatherClass import WeatherInfo
、新しいファイルで天気クエリクラスを直接呼び出すことができます
3. まとめ:
~~~~~~ この記事の内容は、小さな機能モジュールとして後続の知能ロボット システムに適用できる簡単な天気クエリを実現するものであり、これにより、Python コードの記述および Web クローラーの関連操作も練習できます。
~~~~~~ Python を使用した Web コンテンツの自動取得が更新されました。参照リンク:
https://blog.csdn.net/DALEONE/article/details/125196888?spm=1001.2014.3001.5501