如何使用请求模块(python 2.7)来抓取.js网站?

时间:2018-01-23 06:16:00

标签: python web-crawler

当我尝试抓取Taiwan Stock Exchange的实时股票信息时,我使用他们的API来访问所需的信息。发生了一件奇怪的事。

例如,我可以使用以下链接API link访问该信息,该链接将在浏览器上为我返回一个不错的json(类似于:。但它不能返回我的json程序。

我的代码如下

url = "http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=tse_t00.tw|otc_o00.tw|tse_1101.tw|tse_2330.tw&json=1&delay=0&_=1516681976742"

print url

def get_data(query_url):

    headers = {'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:57.0) Gecko/20100101 Firefox/57.0",
           'Accept-Language': 'en-US'
           #'Accept-Language': 'zh-tw'
          }

    req = requests.session()
    req.get('http://mis.twse.com.tw/stock/index.jsp', headers = headers)
    #print req.cookies['JSESSIONID']
    #print req.cookies.get_dict()

    response = req.get(query_url, cookies = req.cookies.get_dict(), headers = headers)

    return  response.text#json.loads(response.text)

a = get_data(query_url = url)

它只会返回u' \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ r \ n \ n \ r \ n&n;'。

我的代码中有什么问题吗?或者根本无法使用请求模块访问此类网页?

还是其他任何建议?非常感谢!!

ps:他们的API格式为:http://mis.twse.com.tw/stock/api/getStockInfo.jsp?ex_ch=[tickers]&[time]

pps:我尝试了模块selenium及其webDriver。它工作但很慢。这就是我想使用请求的原因。

1 个答案:

答案 0 :(得分:0)

如附图所示,文字是非英文的,因此可能是打印的ascii值。对结果使用utf-8编码,您会看到不同的结果。

相关问题