bs4爬取新發地果蔬價格數據,保存爲CSV格式

 

 

 

1.路飛實訓

python爬取新發地每日菜價

import requests #用來發送請求
from bs4 import BeautifulSoup#用來解析網頁
import time#導入時間隔
for i in range(1,100):#爬取第一頁到第100頁的數據
    f = open("新發地果蔬價格.csv",mode='a',encoding="utf-8")#寫人文件新發地果蔬文件名,格式是csv.字符編碼,a是文字
    resp = requests.get(f"http://www.xinfadi.com.cn/marketanalysis/0/list/{i}.shtml")
    print(resp)#200: ok, 302:重定向, 404:頁面丟失,500:服務器錯誤
    page_one = BeautifulSoup(resp.text, "html.parser")#通過html來,把請求的網頁打印出來
    #找到表格數據(table)
    table = page_one.find("table",attrs={"class":"hq_table"}) #表格特徵是class和hq_table
    #找到所有表格的所有tr
    trs = table.find_all("tr")[1:]#獲取表格的內容,通過列表來,第0個元素不要了,[第一行,第二行,到三行......
    for tr in trs:#tr是每一行內容,在所有的行中,遍歷每一列的內容
        tds = tr.find_all("td")#tds是每一列的內容,[第一列,第二列,第三列......]
        name = tds[0].text.strip()#從第0項元素開始取值,取文本形式的內容數據,strip去掉左右兩邊所有的空格
        lowest = tds[1].text.strip()#獲取到數據,去掉左右空格
        avg = tds[2].text.strip()#獲取平均價數據,去掉左右空格
        highest = tds[3].text.strip()#獲取最高價,去掉左右空格
        fenlei = tds[4].text.strip()#獲取分類,去掉左右的空格
        danwei = tds[5].text.strip()#獲取單位數據,去掉左右的空格
        date = tds[6].text.strip()#獲取日期數據,去掉左右空ge
        f.write(f"{name},{lowest},{avg},{highest},{fenlei},{danwei},{date}\n")#把每種果蔬的名字.日期,價格寫入,且換行
        #print(f"{name},{lowest},{avg},{highest},{fenlei},{danwei},{date}")
        print(f"一個頁面完事了{i}")
    time.sleep(1)#防止服務器蹦了,間隔一秒鐘

 

2.保存爲新發地果蔬價格csv

3.結果,打開新發地果蔬CSV查看

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章