まず、我々はページ黄石ほぼ7日間の天気を見つけ、中国の気象ネットワークを開きます。http://www.weather.com.cn/weather/101200601.shtml
その後、F12を押して、ページの構造の分析を開始、各ラベルを見つけて、その役割を分析します。H1:日付; P:天候; TEM-スパン:最高温度; TEM-I:最低温度;勝つ:風; EM:風の方向を、勝つ-Iを:風を。
次に、我々はそれをユーザーエージェントを見つける必要があり、それがユーザーエージェントです。
それについての分析は、我々は、ここで私はすべてのコードと業績を書いたものである書き込みコードを開始しました:
インポート再 インポート要求 から BS4 輸入BeautifulSoup DEF(URL)をget_page: #GETのURL 試み: ヘッダー = { ' ユーザーエージェント':' のMozilla / 5.0(のWindows NT 6.1、Win64の、のx64)のAppleWebKit / 537.36(ヤモリ様KHTML)クローム/ 75.0.3770.90サファリ/ 537.36 ' } R = requests.get(URL、ヘッダ) r.raise_for_status() r.encoding = r.apparent_encoding リターンr.text 除く: リターン 「異常」 #のエラーを防ぐため、例外処理を デフparse_page(HTML、weather_list): スープ = BeautifulSoup(HTML、' html.parser ' ) DAY_LIST = soup.find(' UL '、' T clearfix ').find_all(' 李' ) のための日中DAY_LIST: 日付 = day.find(' H1 ' ).get_text() WEA = day.find(' P '、 ' WEA ' ).get_text() IF day.find(' P '、' TEM ').find(' スパン'):#1 の分析タグ'P'、 'TEM'下これは、最高温度があるかどうかを判断するために、ラベル「スパン」です tem_h = day.find(「P 」、「TEM 」).find(「スパン」).get_text() 他には: tem_h = '' #最高温度 tem_l = day.find(' P '、' TEM ').find(' I ').get_text() #の最低気温 WIN1 re.findall =(" (?<=タイトル=「) 。*?(?=「) 'STR(day.find( ' P- ' ' 勝つ').find(' EM " ))) WIN2 = ' - ' .join(WIN1) #风向、WIN1、WIN2 レベル= day.find(' P '、' 勝利').find(' I ').get_text() #风力 weather_list.append([日付、 WEA、tem_l、tem_h、WIN2、レベル]) デフprint_wea(weather_list): S = ' \ T ' * 3。 印刷(s.join((' 日付'、' 天気'、' 最も低い'、' 最高気温'、' 風'、' 風' ))) のための I でweather_list: 印刷( I [0]、' \ T '、I [1]、' \ T \ T \ T '、I [2]、' \ T \ T \ T '、I [3]、[\ T \ T "、I [4]、' \ T \ T '、I [5]) #を押して出力形式 デフメイン(): URL = ' http://www.weather.com.cn/weather/101200601.shtml ' HTML = get_page(URL) wea_list = [] parse_page(HTML、wea_list) 印刷(" \ T \ T \ T \ T \ T \ T \ T \ T \ T黄石ほぼ7日間の天気予報" ) print_wea(wea_list) もし __name__ == ' __main__ ' : メイン()
このような状況の出力形式では、私のコードはこれです、欠点の多くは、それが来ていたと私は改善を議論するためにあなたを歓迎し、残っています。