python爬虫,Windows上正常,linux爬下错误页?

新手上路,请多包涵

琢磨着搞一个爬虫监控一下12306固定车次的放票情况。
自己电脑上写完之后跑起来很正常。爬取频率也不高。五分钟爬一次,每次爬的时候依次爬8天的车票情况。每天之间间隔5秒。
在自己电脑上跑了三个小时,数据都是正常的。
遂放到vps上让他自己跑。结果爬回来的就是个错误提示页。没有爬到正常的json数据。
怀疑是ip被封,换了个vps,依然不行。又在路由器上装了个Python,跟电脑用的是同一个网。依然爬不到东西。本人比较菜。网上查了半天也没找到解决办法。。

代码如下

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
#import email2
from fake_useragent import UserAgent


'''ltrain_date='2018-12-28'  #日期
from_station='BXP'     #出站
to_station='IOQ'   #到站'''
   #票型

def get_num(date,from_s,to_s):

    url=('https://kyfw.12306.cn/otn/leftTicket/queryZ?'
         'leftTicketDTO.train_date={}&'
         'leftTicketDTO.from_station={}&'
         'leftTicketDTO.to_station={}&'
         'purpose_codes=ADULT').format(date,from_s,to_s)

    head = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'User-Agent': UserAgent().random,
    'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init'
    }

    with requests.Session() as s:
        res = s.get(url,headers = head)  #verify=False
        res.encoding = "utf-8"
    #res = requests.get(url,params=param,headers = head)
    #r = res.text.encode('utf-8')
    print(res.text)

    #print(type(r))
    jsons = json.loads(res.text)


    data1 = jsons["data"]["result"][2]
    data = data1.split("|")

    print("{},{},{}".format(data[3],data[28],data[29]))
    return data[3],data[28],data[29]
    #return res

    # 3车次,26无座,28硬卧,29硬座
if __name__ == '__main__':
    get_num("2019-01-03","QTP","WFK")

url部分,本来是用的params传入数据,Windows上也没问题。vps的Centos上不行。换成了现在这个样子的。在vps上爬了一组数据就不行了。

阅读 1.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题