python爬取近一周天氣並使用xpath解析

2021-10-20 14:25:05 字數 2789 閱讀 6998

xpath即為xml路徑語言(xml path language),它是一種用來確定xml文件中某部分位置的語言。

說白了就是找出xml文件中我們想要的內容,這裡我們使用天氣2345**上的資料來舉例,其**主頁面的原始碼如下:

這裡我們想要提取從今天開始的一周內的天氣情況,其中包括日期、天氣情況、溫度範圍、風力大小、空氣質素。這些資料都在我擷取的圖中可以找到,如今天2.28的資料:

我們發現每一天的資料都儲存在這個li標籤下面,而所有li標籤又在標籤下,所以我們要先定位到這個標籤下。

1. 爬取網頁資料

這裡的網頁資料是靜態的,所以爬取很簡單:

import requests

url=""

headers=

response=requests.get(url,headers=headers)

2. 生成html物件使用xpath(1)獲取html物件

from lxml import etree

html=etree.html(response.text)

(2)定位到class屬性為"seven-day"div節點:

divs=html.xpath('//div[@class="seven-day"]')[0]
這裡解釋一下://:查詢所有li標籤(不受限全域性查詢)

[@class="seven-day"]:如果要查詢屬性,必須在屬性名前使用@來裝飾,這裡加上中括號表示查詢class屬性為"seven-day"div節點

3.後面[0]是因為生成出來的是列表,要取html物件

輸出結果:

(3)找出div節點下的a標籤,因為資料明細都集中在這個a標籤下

lis=divs.xpath('./ul/li/a')
這裡解釋一下:.:表示從當前節點開始(.相當於//div[@class="seven-day"]

3. 利用xpath篩選出我們想要的資料`(1)日期

li.xpath('./em/text()')
(2)天氣情況

li.xpath('./i/text()')
(3)溫度變化

li.xpath('./span[@class="tem-show"]/text()')
(4)風力

li.xpath('./span[@class="wind-name"]/text()')
(5)空氣質素

li.xpath('./span[@class="wea-qulity"]/text()')
這裡解釋一下:text():輸出節點下的所有內容

4. 放入**`

北漂一周天(面試經歷)

開開心心來到北京,接觸到了很多的新鮮事物,把行李安置在朋友家就去看之前看的房子。因為兩個人和住意見不和,最後住在了北京一家青年旅社,50一晚,一晚都沒睡好。青年旅社環境很差,一想自己早上五點起床到晚上,簡簡單單只吃了一盤蛋炒飯,沒有休息,很難受。其實從 想想也想出來了,和同行的兄弟在天台聊到深夜,總...

python周天為一周的開始 每週覆盤(四)

其實就是周記啦,但我想讓名字聽起來洋氣點 2020.11.9 2020.11.15,寫於2020.11.18,我保證以後週日或周一 一定按時更 本週問題 一.惡性迴圈 周一至周五學習效率低,又是沒幹什麼實事的一周。又是自習課上的莫名其表的一周,沒規劃,不停玩手機。這週又有雙十一,又買了幾樣大件,結果...

使用Python去爬取中國天氣網的近7天天氣情況

import requests from bs4 import beautifulsoup address for i in range 1,24 z if i 5 z 0 str i 0100 if i 4 and i 10 z 0 str i 0101 if i 9 z str i 0101 a...