Python爬取公交數據

本文將從以下幾個方面詳細闡述python爬取公交數據的方法:

一、準備工作

1、安裝相關庫

import requests
from bs4 import BeautifulSoup
import csv

2、獲取數據源網站url

url = 'http://bus.suzhou.gov.cn/zk/zwgjcx/zxcx_kc_list.aspx'

二、獲取數據

1、分析網頁代碼,獲取需要爬取數據的標籤

<tr class="odd">
    <td>1</td>
    <td>13路</td>
    <td>相城區公交總公司</td>
    <td>旺山區域</td>
    <td>綜合商場8:00</td>
    <td>綜合商場19:00</td>
    <td>25.5</td>
    <td>2018-08-15</td>
</tr>

2、編寫函數,將需要的數據提取出來

def get_data(item):
    data = []
    rows = item.findAll('td')
    data.append(rows[1].text.strip())
    data.append(rows[2].text.strip())
    data.append(rows[3].text.strip())
    data.append(rows[4].text.strip())
    data.append(rows[5].text.strip())
    data.append(rows[6].text.strip())
    data.append(rows[7].text.strip())
    return data

3、利用requests庫發送GET請求,獲取網頁內容;再用BeautifulSoup庫解析網頁內容,獲取table中的所有tr標籤,遍歷每個tr標籤,調用get_data函數獲取數據,並將獲取到的數據保存至csv文件

response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

table = soup.find('table', {'class': 'table_list kcjl_table'})
rows = table.findAll('tr')

with open('data.csv', mode='w', encoding='utf-8', newline='') as file_csv:
    writer = csv.writer(file_csv)
    writer.writerow(['線路', '所屬公司', '區域', '發車時間', '末班車時間', '票價', '更新時間'])
    for item in rows:
        if item.find('td') is None:
            continue
        writer.writerow(get_data(item))

三、結果展示

分析當前目錄下是否生成了data.csv文件,打開該文件查看是否成功導出數據

四、注意事項

1、在requests庫中,可能需要設置headers參數,以模擬正常瀏覽器訪問行為;

2、在使用BeautifulSoup庫解析網頁內容時,需要注意標籤名稱、屬性類型等信息;

3、在保存數據至csv文件時,需要注意文件編碼、文件類型等信息

原創文章,作者:LSRZG,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/375427.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
LSRZG的頭像LSRZG
上一篇 2025-04-29 12:49
下一篇 2025-04-29 12:49

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python for循環求1到100的積

    Python中的for循環可以方便地遍歷列表、元組、字典等數據類型。本文將以Python for循環求1到100的積為中心,從多個方面進行詳細闡述。 一、for循環語法 Pytho…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29

發表回復

登錄後才能評論