2023年11月9日 星期四

TQC~網頁資料擷取與分析 python3

 感謝資訊文生研習室的分享。也感謝菜鳥救星講解JSON

可以用VSCODE的右鍵→格式化文件,將JSON排的美美的@@大小有差,原76KB,美美96KB。CSV用記事本開啟就不會亂碼(EXCEL開會亂碼,感謝亞倫分享)

網路抓CSV讓python直接使用,感謝mike分享

跟著書做遇到的問題

  • 爬ibon動態網頁時,用append加dataFrame時,顯示要淘汰append方法,請改用concat。感謝stackOverflow分享,要放入陣列中。df711 = pd.concat(df711,  df711_other) 成功。


第一類:

  1. 讀取JSON,要先 import json,
    dict1 = json.load(fr.readline())。dict1竟然不用先宣告(保險還是先宣告)。
    JSON裡剛好是多筆的dict格式,所以用readline剛好就是一筆。
    也可以直接載入整個json檔, data = json.load(json檔)
  2. 讀取XML,import xml.etree.ElementTree as ET
    抓XML資料比較多個步驟,
    1.tree = ET.parse(  'read.xml')  #別忘記
    2.要取得根資料,root = tree.getroot()
  3. 讀取JSON,好像只有XML、HTML不用 "with open"
    記得要換行, \n。
    yaml.dump寫入yaml檔。
  4. 給JSON資料,寫入到JSON檔。
    json.dumps寫入JSON檔。
  5. 讀取DB檔,使用connect、cursor、execute,最後要將connect關閉。
    cus = con.cursor()  #別忘記

第二類:

  1. 給html網址,搜尋關鍵字。
    要 import requests(讀取網頁內容),import re(感謝Chwang分享,這是正規化的模組)
    用re.findall (關鍵字,內容) 來搜尋。
    感謝OXXO分享將網頁內容轉UTF8html.encoding='utf8'
  2. 抓網頁的資料,from bs4 import BeautifulSoup,感謝蟲王分享lxml與其他解析器的比較
    這裡也有findAll('td'),All是大寫的A。
    findAll('TD'),不能寫TD(雖然網頁code顯示TD),但還是要寫td(小寫)
    有稍作修改,但卡住(就是想直接抓資料的table名,是有抓到資料,但跟原本抓到的一樣@@在進一步抓td就出錯了)
  3. 若是給網址就要 import requests,這裡是使用 find_all('div', {'class' : 'ball_tx  ball_yellow'})
    抓到的會出現亂碼,感謝IT人分享設定html=requests.get('https://www.codejudger.com/target/5203.html')
    html.encoding='utf-8'
  4. 給JSON網址,所以 import requests,jsonFile = json.loads (html.text)
    跟1-1不一樣,1-1是直接給json檔,所以用json.load(json檔)
  5. 給JSON網址,所以 import requests,jsonFile是雙陣列,[ [ 台北市, 汐止 ] , [ 台北市, 基隆] , ... ]。所以老師應該會教,要先看資料內容吧???

第三類:

  1. 給資料
  2. 感謝brilliantCode分享

第四類:

  1. mpl.use('Agg'),感謝台部落分享,原來還有其他的GG



沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。