資料採集與融合技術實驗課程作業二
作業所屬課程 | https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology |
---|---|
作業連結 | https://edu.cnblogs.com/campus/fzu/2024DataCollectionandFusiontechnology/homework/13285 |
gitee碼雲程式碼位置 | https://gitee.com/wang-qiangsy/crawl_project/tree/master/作業二 |
學號 | 102202106 |
目錄
- 資料採集與融合技術實驗課程作業二
- 作業內容
- 作業①:在中國氣象網(http://www.weather.com.cn)給定城市集的7日天氣預報,並儲存在資料庫。
- 作業②:用requests和BeautifulSoup庫方法定向爬取股票相關資訊,並儲存在資料庫中。
- 作業③:爬取中國大學2021主榜(https://www.shanghairanking.cn/rankings/bcur/2021)所有院校資訊,並儲存在資料庫中。
- 作業①:
- 主要程式碼
- 程式碼執行結果
- 作業心得
- 作業②:
- 主要程式碼
- 程式碼執行結果
- 作業心得
- 作業③:
- 主要程式碼
- 程式碼執行結果
- 作業心得
- 作業內容
作業內容
作業①:在中國氣象網(http://www.weather.com.cn)給定城市集的7日天氣預報,並儲存在資料庫。
作業②:用requests和BeautifulSoup庫方法定向爬取股票相關資訊,並儲存在資料庫中。
作業③:爬取中國大學2021主榜(https://www.shanghairanking.cn/rankings/bcur/2021)所有院校資訊,並儲存在資料庫中。
作業①:
主要程式碼
# 定義獲取天氣資料的函式
def get_weather_data(city_code):
url = f'http://www.weather.com.cn/weather/{city_code}.shtml'
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
weather_data = []
forecast = soup.find('ul', class_='t clearfix')
for li in forecast.find_all('li'):
date = li.find('h1').text
weather = li.find('p', class_='wea').text
temperature = li.find('p', class_='tem').text.strip()
wind = li.find('p', class_='win').find('span')['title']
weather_data.append((date, weather, temperature, wind))
return weather_data
程式碼執行結果
執行檢視DB檔案指令碼檢視天氣資料
作業心得
- 資料抓取與解析
在這次作業中,我使用了 requests 庫來傳送 HTTP 請求,並使用 BeautifulSoup 庫來解析 HTML 內容。透過解析網頁中的天氣預報資料,我能夠提取出每一天的日期、天氣情況、溫度和風力資訊。 - 資料儲存
為了儲存抓取到的天氣資料,使用了 sqlite3 庫來建立和操作 SQLite 資料庫。透過建表然後儲存所需要的資訊。
作業②:
主要程式碼
# 獲取網頁內容
def get_html(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
}
try:
response = requests.get(url, headers=headers)
response.raise_for_status() # 確保請求成功
return response.text
except requests.RequestException as e:
print(f"Error fetching data from {url}: {e}")
return ""
# 解析JSON內容,提取股票資訊
def parse_page(json_data):
stock_data = []
data = json.loads(json_data)
if 'data' in data and 'diff' in data['data']:
for item in data['data']['diff']:
stock_name = item['f14']
stock_price = item['f2']
stock_change = item['f3']
stock_data.append((stock_name, stock_price, stock_change))
return stock_data
程式碼執行結果
執行檢視DB檔案指令碼檢視股票資料
作業心得
- F12除錯分析
透過網頁除錯分析抓取需要的資訊部分,提取其URL資訊,我透過F12除錯分析後抓取了包含股票資訊的URL資訊。 - 資料抓取與解析
在這次作業中,我使用了 requests 庫來傳送 HTTP 請求,並使用 BeautifulSoup 庫來解析 HTML 內容。 - 資料儲存
為了儲存抓取到的股票資料,使用了 sqlite3 庫來建立和操作 SQLite 資料庫。透過建表然後儲存所需要的資訊。
作業③:
主要程式碼
# 定義獲取院校資料
def get_university_data():
url = 'https://www.shanghairanking.cn/rankings/bcur/2021'
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
university_data = []
# 查詢包含院校資訊的表格
table = soup.find('table')
for row in table.find_all('tr')[1:]:
cols = row.find_all('td')
if len(cols) > 1:
rank = cols[0].text.strip()
name = cols[1].text.strip()
province = cols[2].text.strip()
total_score = cols[3].text.strip()
university_data.append((rank, name, province, total_score))
return university_data
程式碼執行結果
執行檢視DB檔案指令碼檢視股票資料
作業心得
- F12除錯分析
透過網頁除錯分析抓取需要的資訊部分,提取其URL資訊,我透過F12除錯分析後抓取了包含大學資訊的URL資訊。 - 資料抓取與解析
在這次作業中,我使用了 requests 庫來傳送 HTTP 請求,並使用 BeautifulSoup 庫來解析 HTML 內容。 - 資料儲存
為了儲存抓取到的股票資料,使用了 sqlite3 庫來建立和操作 SQLite 資料庫。透過建表然後儲存所需要的資訊。