作者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/cn.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