資料採集與融合技術實驗課程作業二

KaiInssy發表於2024-10-19

資料採集與融合技術實驗課程作業二

作業所屬課程 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檔案指令碼檢視天氣資料

作業心得

  1. 資料抓取與解析
    在這次作業中,我使用了 requests 庫來傳送 HTTP 請求,並使用 BeautifulSoup 庫來解析 HTML 內容。透過解析網頁中的天氣預報資料,我能夠提取出每一天的日期、天氣情況、溫度和風力資訊。
  2. 資料儲存
    為了儲存抓取到的天氣資料,使用了 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檔案指令碼檢視股票資料

作業心得

  1. F12除錯分析
    透過網頁除錯分析抓取需要的資訊部分,提取其URL資訊,我透過F12除錯分析後抓取了包含股票資訊的URL資訊。
  2. 資料抓取與解析
    在這次作業中,我使用了 requests 庫來傳送 HTTP 請求,並使用 BeautifulSoup 庫來解析 HTML 內容。
  3. 資料儲存
    為了儲存抓取到的股票資料,使用了 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檔案指令碼檢視股票資料

作業心得

  1. F12除錯分析
    透過網頁除錯分析抓取需要的資訊部分,提取其URL資訊,我透過F12除錯分析後抓取了包含大學資訊的URL資訊。
  2. 資料抓取與解析
    在這次作業中,我使用了 requests 庫來傳送 HTTP 請求,並使用 BeautifulSoup 庫來解析 HTML 內容。
  3. 資料儲存
    為了儲存抓取到的股票資料,使用了 sqlite3 庫來建立和操作 SQLite 資料庫。透過建表然後儲存所需要的資訊。

相關文章