终于来到下啦!!马上就要完结了,先展示一下最终的成品吧!

下面就是我们对上次那个最终版的处理,当然,不要在意我的命名,这个就是处理中篇最后的那个csv,如果我的文件名字对不上大家也不要care了,存了太多副本了,这个total1,2,3是因为平均一个车次会有10个详情站左右,大概一天会有8万多条数据,由于excel有显示上限,所以建议10天处理一次,我这应该是最后第三批剩下的几天,前面的改一下date_list就能用了,最后对这三个total1,2,3的csv分别去重,注意哦,要根据车次和站点名称两列进行去重,因为存在在不同的日期中间经停站不一样的情况。最后将去重完的三个total再综合一下,进行去重操作,得到的结果就是我们想要的了。

import pandas as pd
import requests
import csv
import json
import os
import time# url = "https://kyfw.12306.cn/otn/queryTrainInfo/query?leftTicketDTO.train_no=24000013030W&leftTicketDTO.train_date={}&rand_code="
# test_url_wu="https://kyfw.12306.cn/otn/queryTrainInfo/query?leftTicketDTO.train_no=2400000K211K&leftTicketDTO.train_date=2020-12-11&rand_code="
base_url = "https://kyfw.12306.cn/otn/queryTrainInfo/query?leftTicketDTO.train_no={}&leftTicketDTO.train_date={}&rand_code="
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
}
train_date_list = ["2021-01-02", "2021-01-03","2021-01-04", "2021-01-05", "2021-01-06", "2021-01-07", "2021-01-08"]proxies = {# 格式:  协议:协议://ip地址:端口号"HTTP": "http://113.121.36.73:9999"
}  # 使用代理##########################################################################
# 这块是测试数据
# reponse = requests.get(url=test_url_wu, headers=headers, proxies=proxies)
# data_list = json.loads(reponse.content)["data"]["data"]
# if data_list is not None:
#     print("有数据")
# else:
#     print("无数据")
###########################################################################
if not os.path.exists("12306爬虫原始数据处理"):os.mkdir("112306爬虫原始数据处理")
# with open(f"12306爬虫原始数据处理/车次详情站点信息_total版.csv", "w", newline="", encoding="utf-8")as f:
with open(f"12306爬虫原始数据处理/车次详情站点信息_total版3.csv", "w", newline="", encoding="utf-8")as f:writer = csv.writer(f)writer.writerow(["车次", "车次编号", "站点序号", "站点名称", "出发站", "终点站", "经停站总数", "时间"])for i in range(0, 7):count = 0df = pd.read_csv(r"D:\Contest_test\pachong_self\实习爬虫\12306爬虫原始数据处理\所有车次信息5.csv")for index, row in df.iterrows():train_name = row["车次"]train_no = row["编号"]start_station = row["出发站"]end_station = row["终点站"]total_num = row["经停站站总数"]train_no_use = train_no.strip("#")ful_url = base_url.format(train_no_use, train_date_list[i])reponse = requests.get(url=ful_url, headers=headers, proxies=proxies)flag = 1while (flag == 1):try:data_list = json.loads(reponse.content)["data"]["data"]if data_list is not None:for tmp in data_list:station_no = tmp["station_no"]station_name = tmp["station_name"]writer.writerow([train_name, train_no, station_no, station_name, start_station, end_station, total_num,train_date_list[i]])# print(train_name, train_no, station_no, station_name, start_station, end_station, total_num,#       train_date_list[i])else:count = count + 1flag = 0except Exception as e:reponse = requests.get(url=ful_url, headers=headers, proxies=proxies)print("{}天匹配不到的车次数量为{}".format(train_date_list[i], count))# time.sleep(0.1)

纪念第一次写博文,版式什么的都很丑,而且一点都不可爱,哎,不过就这样吧,我的方法属于暴力法,希望对你有一点点帮助!一起加油吧!!!

12306所有车次及时刻表的爬取下相关推荐

  1. 12306所有车次及时刻表的爬取中

    在上一篇博文里,我最后大概写了下第一个小目标实现的思路,下面先展示一下第一个目标实现的成果. 一.成果展示 爬取完之后的结果大概是这个样子的,每一天的数据保存成一个文件夹,我是爬取了近一个月的车次信息 ...

  2. 12306所有车次及时刻表的爬取上

    首先先介绍我最终的目标:爬取全国所有车次的经停站信息,就是图1的红色框出来的部分.那么我们所需要的是什么呢?对,就是全国所有的车次,这就是我们的第一个小目标 图1: 接着我就在XHR里抓包,结果见图2 ...

  3. 爬虫项目实操二、爬取“下厨房”网站的菜名、所需材料、和菜名所对应的详情页URL

    项目-爬取"下厨房"网站的菜名.所需材料.和菜名所对应的详情页URL. 它有一个固定栏目,叫做"本周最受欢迎",收集了当周最招人喜欢的菜谱.地址如下: http ...

  4. 爬取下载网易云热门歌单的音乐

    这个小程序最难的有2部分. 第一部分,爬取网易云网页源码. 在第一次通过requests请求https://music.163.com/ 发现返回的 源码和网页的源码完全不相同,然后通过查找资料,了解 ...

  5. PY爬虫 | 爬取下厨房的本周最受欢迎

    # CY3761 | 2021-10-27 20:03# 爬取下厨房的本周最受欢迎-列表数据 import base64 import os.path from urllib import reque ...

  6. python周末吃什么_python爬虫第10关项目周末吃什么(每周五自动爬取下厨房本周最受欢迎的菜谱)...

    目标:我们曾在第3关爬取了下厨房网站中的"本周最受欢迎菜谱",现在,我们完善这个程序,让程序在每个周五爬取数据,并把菜谱发送到我们的邮箱. import requests impo ...

  7. python爬取下拉列表数据_Python怎么爬取下拉式的网页?

    谢邀~不BB直接给代码, # for shisi # time 2020.2.26 import requests url = "https://www.vmgirls.com/wp-adm ...

  8. python 爬取下一页_如何使用Beautifulsoup在python中抓取下一页

    通过提取"转到最后一页"元素的page参数来确定最后一页.并通过^{}遍历每个维护web抓取会话的页面:import re import requests from bs4 imp ...

  9. 爬取下厨房网站菜名与食材

    方法一: import requests# 引用requests库from bs4 import BeautifulSoup# 引用BeautifulSoup库 res_foods = request ...

最新文章

  1. 安装CocoaPods
  2. Hadoop报错信息:Job not successful. Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 4.
  3. Camera360SDK
  4. 导入别的项目到我的eclipse上出现红色感叹号问题解决方案
  5. java并发中的延迟初始化
  6. 今天的作业 --- 去重
  7. 利用用户级线程提高多线程应用的性能
  8. 编写让别人能够读懂的代码
  9. 基于依赖统计的方法——TPDA
  10. linux ulimit调优
  11. 字节跳动面试经验 php,双指针算法:字节跳动初级面试题 PHP
  12. pyhon中安装win32com模块
  13. chrome浏览器导出扩展_每日新闻摘要:再次跟踪您的浏览历史记录的Google Chrome浏览器扩展...
  14. 解决the application was unable to start correctly(0x000007b)与 缺少VCRUNTIME140.dll
  15. 2017年12月19-20日 阿里云 飞天/智能 云栖大会-北京峰会 会议笔记
  16. 小米2/2S刷基于Android 5.1.1的CM12.1系统教程
  17. linux僵尸进程产生的原因以及如何避免产生僵尸进程
  18. 【弹吉他必备的乐理知识】【2】节拍
  19. create volume
  20. Python私有属性

热门文章

  1. 基于Android校园失物招领系统
  2. python初学者代码示例_python入门(非常详细的教程)
  3. lab2物理内存管理实现
  4. Visualizing and Understanding Convolutional Networks - 可视化和理解卷积网络 - 看懂卷积网络
  5. Arrays.asList()抛错:UnsupportOperationException
  6. ppt可尝试修复此演示文稿_3个工具,可轻松创建演示文稿
  7. SpringBoot 自定义Starter(阿里云短信、消息推送)
  8. 常更新,记录一些常用的Linux软件
  9. vue中的 SPA 与 SSR 的使用场景以及element-UI、Nuxt.js 的使用
  10. 服务器布署(一):阿里云服务器,配合宝塔使用(网页端宝塔)