[問題] 用requests.post爬蟲 以及編碼的問題

看板Python作者 (akpipnlge)時間9年前 (2016/06/30 19:46), 編輯推噓3(3015)
留言18則, 4人參與, 最新討論串1/2 (看更多)
小弟因為專題需要爬證交所網站的一些資料,所以用python 2.7 和requests套件操作 網址如下: http://www.twse.com.tw/ch/trading/indices/MI_5MINS_HIST/MI_5MINS_HIST.php (每個月份都要爬) 程式碼如下: import requests payload = { 'myear': 2016, 'mmom': 5 } url='http://www.twse.com.tw/ch/trading/indices/MI_5MINS_HIST/MI_5MINS_HIST.php' page = requests.post(url, data=payload) print page.text.decode('iso-8859-1').encode('utf8') 然後就遇到兩個問題: 1.有抓到東西,但是只有抓到其他不重要的,數據的部分完全沒有 (應該是payload那有錯,抱歉小弟連html都沒寫過QQ) 2.抓下來的編碼是亂碼,所以加了爬文看到的解碼那行,卻出現error: UnicodeEncodeError: 'ascii' codec can't encode character u'\xbb' in position 130: ordinal not in range(128) 整整花了3個半天還是搞不定,只好PO文求救了QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.179.6 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1467316011.A.17A.html

07/01 05:42, , 1F
按F12看原始碼,它是先把資料讀入一個input
07/01 05:42, 1F

07/01 05:43, , 2F
直接從input讀數值(是html),再用BeautifulSoup轉就好
07/01 05:43, 2F

07/01 08:07, , 3F
ㄜ 其實不是上面的問題 只是你 key 帶錯了
07/01 08:07, 3F

07/01 08:07, , 4F
2016(X =>105(O, mmom(X =>mmon(O
07/01 08:07, 4F

07/01 08:09, , 5F
payload={'myear':'105','mmon':'06'}
07/01 08:09, 5F

07/01 08:10, , 6F
他月份也限定只能是 06, 所以你不能少那個0
07/01 08:10, 6F

07/01 21:15, , 7F
我用s大的方式還是爬不到
07/01 21:15, 7F

07/01 21:15, , 8F
應該是還少了查詢那個button的key
07/01 21:15, 8F

07/01 21:17, , 9F
但是我從網頁的原始碼找不到那個button的name QQ
07/01 21:17, 9F

07/01 21:22, , 10F
原始碼應該是這行:
07/01 21:22, 10F

07/01 21:22, , 11F
<input type=button class="board" value="查詢"
07/01 21:22, 11F

07/01 21:22, , 12F
onclick="date_form.submit();">
07/01 21:22, 12F

07/01 22:39, , 13F
我試s大的解法是ok
07/01 22:39, 13F

07/01 22:40, , 14F
只是不知為何 BeautifulSoup 無法解析
07/01 22:40, 14F

07/02 06:34, , 15F
嗚嗚 我終於成功了 不過beautifulsoup我也不work
07/02 06:34, 15F

07/02 06:36, , 16F
所以最後就用HTMLParser去Tag 非常感謝樓上兩位大大
07/02 06:36, 16F

07/03 18:30, , 17F
程式多加入 page.encoding='utf-8'
07/03 18:30, 17F

07/03 18:31, , 18F
後面page.text 就是正確的編碼了
07/03 18:31, 18F
文章代碼(AID): #1NTNSh5w (Python)
文章代碼(AID): #1NTNSh5w (Python)