已有184人关注
快手爬票内容咨询
发表在Python图书答疑 2019-09-20 《零基础学Python》第14章 网络爬虫开发
是否精华
版块置顶:

快手爬票的例子,有两个问题想咨询下。

1、如果我想爬出的数据导到Excel,表头应该如何增加?只能通过 sheet1.write(0,'列数','表头每一列内容') 这种方式吗?有没有快速增加的写法?

2、爬虫代码有时候会报错,报错截图请见附件

快手爬票爬虫报错.png

import requests
'''5-7 目的地 3  车次 6  出发地 8  出发时间 9  到达时间 10 历时 26 无坐 29 硬座
   24 软座 28 硬卧 33 动卧 23 软卧 21 高级软卧 30 二等座 31 一等座 32 商务座特等座
'''
data = []  # 用于保存整理好的车次信息
type_data = []  # 保存车次分类后最后的数据

def query(date, from_station, to_station):
    # data.clear()  # 清空数据
    # type_data.clear()  # 清空车次分类保存的数据
    # 查询请求地址
    url = 'https://kyfw.12306.cn/otn/leftTicket/queryA?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT'.format(date, from_station, to_station)
    # 发送查询请求
    response = requests.get(url)
    print(response.status_code)
    # 将json数据转换为字典类型,通过键值对取数据
    result = response.json()
    result = result['data']['result']
    if len(result) != 0:  # 判断返回数据是否为空
        for i in result:
            # # 分割数据并添加到列表中
            tmp_list = i.split('|')            
            # 创建座位数组,由于返回的座位数据中含有空既“”,所以将空改成--这样好识别
            seat = [date, tmp_list[3], from_station, to_station, tmp_list[8], tmp_list[9], tmp_list[10]
                    , tmp_list[32], tmp_list[31], tmp_list[30], tmp_list[21]
                    , tmp_list[23], tmp_list[33], tmp_list[28], tmp_list[24], tmp_list[29], tmp_list[26]]
            
            newSeat = []
            # 循环将座位信息中的空既“”,改成--这样好识别
            for s in seat:
                if s == "":
                    s = "--"
                else:
                    s = s
             	# 保存新的座位信息
                newSeat.append(s) 
            type_data.append(newSeat) 
        return type_data   

if __name__ == '__main__':
    newdata = query('2019-09-21','GZQ','CDW')
    print(newdata)


分享到:
精彩评论 4
三生石
学分:2171 LV10
TA的每日心情
11
2018-12-20 21:21:04
2019-09-23
沙发

您好读者!对于爬虫代码会出错,请您查看网络请求地址是否更换,如果是官方把请求地址更换了,您也需要更换对应的请求地址。

关于将数据写入Excel中可以参考以下地址

https://www.jb51.net/article/160676.htm

cwk1993
学分:21 LV2
2019-09-27
板凳

请求地址已经改过来,也不是完全不行,10次能成功2-3次,为什么有时可以,有时候不行?错误的提示见截图



三生石
学分:2171 LV10
TA的每日心情
11
2018-12-20 21:21:04
2019-09-27
地板

您好读者!首先您需要检测请求是否成功,请求参数是否正确,还有就是 是否频繁的进行网络请求,如果使用一个固定的ip地址频繁的向网站不断的发送请求,网站后台会拒绝您的请求  视为恶意请求。

cwk1993
学分:21 LV2
2019-09-27
4L

三生石 发表于2019-09-27 11:13

您好读者!首先您需要检测请求是否成功,请求参数是否正确,还有就是 是否频繁的进行网络请求,如果使用一个固定的ip地址频繁的向网站不断的发送请求,网站后台会拒绝您的请求  视为恶意请求。

老师,您好,代码中我每次都执行print(response.status_code),先得到的结果都是200,证明是通的,走到result = response.json()时,有时就会报错。

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照