[问题] 用requests.post爬虫 以及编码的问题

楼主: akpipnlge (akpipnlge)   2016-07-01 03:46:46
小弟因为专题需要爬证交所网站的一些资料,所以用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
作者: woogee (woogee)   2016-07-01 05:42:00
按F12看原始码,它是先把资料读入一个input直接从input读数值(是html),再用BeautifulSoup转就好
作者: s860134 (s860134)   2016-07-01 08:07:00
ㄜ 其实不是上面的问题 只是你 key 带错了2016(X =>105(O, mmom(X =>mmon(Opayload={'myear':'105','mmon':'06'}他月份也限定只能是 06, 所以你不能少那个0
楼主: akpipnlge (akpipnlge)   2016-07-01 21:15:00
我用s大的方式还是爬不到应该是还少了查询那个button的key但是我从网页的原始码找不到那个button的name QQ原始码应该是这行:<input type=button class="board" value="查询"onclick="date_form.submit();">
作者: iPhone007 (iPhone007)   2016-07-01 22:39:00
http://imgur.com/QDY1HLM 我试s大的解法是ok只是不知为何 BeautifulSoup 无法解析
楼主: akpipnlge (akpipnlge)   2016-07-02 06:34:00
呜呜 我终于成功了 不过beautifulsoup我也不work所以最后就用HTMLParser去Tag 非常感谢楼上两位大大
作者: s860134 (s860134)   2016-07-03 18:30:00
程式多加入 page.encoding='utf-8'后面page.text 就是正确的编码了

Links booklink

Contact Us: admin [ a t ] ucptt.com