作者akpipnlge (akpipnlge)
看板Python
標題[問題] 用requests.post爬蟲 以及編碼的問題
時間Fri Jul 1 03:46:46 2016
小弟因為專題需要爬證交所網站的一些資料,所以用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://webptt.com/m.aspx?n=bbs/Python/M.1467316011.A.17A.html
1F:推 woogee: 按F12看原始碼,它是先把資料讀入一個input 07/01 05:42
2F:→ woogee: 直接從input讀數值(是html),再用BeautifulSoup轉就好 07/01 05:43
3F:→ s860134: ㄜ 其實不是上面的問題 只是你 key 帶錯了 07/01 08:07
4F:→ s860134: 2016(X =>105(O, mmom(X =>mmon(O 07/01 08:07
5F:→ s860134: payload={'myear':'105','mmon':'06'} 07/01 08:09
6F:→ s860134: 他月份也限定只能是 06, 所以你不能少那個0 07/01 08:10
7F:→ akpipnlge: 我用s大的方式還是爬不到 07/01 21:15
8F:→ akpipnlge: 應該是還少了查詢那個button的key 07/01 21:15
9F:→ akpipnlge: 但是我從網頁的原始碼找不到那個button的name QQ 07/01 21:17
10F:→ akpipnlge: 原始碼應該是這行: 07/01 21:22
11F:→ akpipnlge: <input type=button class="board" value="查詢" 07/01 21:22
12F:→ akpipnlge: onclick="date_form.submit();"> 07/01 21:22
14F:→ iPhone007: 只是不知為何 BeautifulSoup 無法解析 07/01 22:40
15F:→ akpipnlge: 嗚嗚 我終於成功了 不過beautifulsoup我也不work 07/02 06:34
16F:→ akpipnlge: 所以最後就用HTMLParser去Tag 非常感謝樓上兩位大大 07/02 06:36
17F:推 s860134: 程式多加入 page.encoding='utf-8' 07/03 18:30
18F:→ s860134: 後面page.text 就是正確的編碼了 07/03 18:31