12306所有车次及时刻表的爬取下
终于来到下啦!!马上就要完结了,先展示一下最终的成品吧!
下面就是我们对上次那个最终版的处理,当然,不要在意我的命名,这个就是处理中篇最后的那个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所有车次及时刻表的爬取下相关推荐
- 12306所有车次及时刻表的爬取中
在上一篇博文里,我最后大概写了下第一个小目标实现的思路,下面先展示一下第一个目标实现的成果. 一.成果展示 爬取完之后的结果大概是这个样子的,每一天的数据保存成一个文件夹,我是爬取了近一个月的车次信息 ...
- 12306所有车次及时刻表的爬取上
首先先介绍我最终的目标:爬取全国所有车次的经停站信息,就是图1的红色框出来的部分.那么我们所需要的是什么呢?对,就是全国所有的车次,这就是我们的第一个小目标 图1: 接着我就在XHR里抓包,结果见图2 ...
- 爬虫项目实操二、爬取“下厨房”网站的菜名、所需材料、和菜名所对应的详情页URL
项目-爬取"下厨房"网站的菜名.所需材料.和菜名所对应的详情页URL. 它有一个固定栏目,叫做"本周最受欢迎",收集了当周最招人喜欢的菜谱.地址如下: http ...
- 爬取下载网易云热门歌单的音乐
这个小程序最难的有2部分. 第一部分,爬取网易云网页源码. 在第一次通过requests请求https://music.163.com/ 发现返回的 源码和网页的源码完全不相同,然后通过查找资料,了解 ...
- PY爬虫 | 爬取下厨房的本周最受欢迎
# CY3761 | 2021-10-27 20:03# 爬取下厨房的本周最受欢迎-列表数据 import base64 import os.path from urllib import reque ...
- python周末吃什么_python爬虫第10关项目周末吃什么(每周五自动爬取下厨房本周最受欢迎的菜谱)...
目标:我们曾在第3关爬取了下厨房网站中的"本周最受欢迎菜谱",现在,我们完善这个程序,让程序在每个周五爬取数据,并把菜谱发送到我们的邮箱. import requests impo ...
- python爬取下拉列表数据_Python怎么爬取下拉式的网页?
谢邀~不BB直接给代码, # for shisi # time 2020.2.26 import requests url = "https://www.vmgirls.com/wp-adm ...
- python 爬取下一页_如何使用Beautifulsoup在python中抓取下一页
通过提取"转到最后一页"元素的page参数来确定最后一页.并通过^{}遍历每个维护web抓取会话的页面:import re import requests from bs4 imp ...
- 爬取下厨房网站菜名与食材
方法一: import requests# 引用requests库from bs4 import BeautifulSoup# 引用BeautifulSoup库 res_foods = request ...
最新文章
- 安装CocoaPods
- Hadoop报错信息:Job not successful. Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 4.
- Camera360SDK
- 导入别的项目到我的eclipse上出现红色感叹号问题解决方案
- java并发中的延迟初始化
- 今天的作业 --- 去重
- 利用用户级线程提高多线程应用的性能
- 编写让别人能够读懂的代码
- 基于依赖统计的方法——TPDA
- linux ulimit调优
- 字节跳动面试经验 php,双指针算法:字节跳动初级面试题 PHP
- pyhon中安装win32com模块
- chrome浏览器导出扩展_每日新闻摘要:再次跟踪您的浏览历史记录的Google Chrome浏览器扩展...
- 解决the application was unable to start correctly(0x000007b)与 缺少VCRUNTIME140.dll
- 2017年12月19-20日 阿里云 飞天/智能 云栖大会-北京峰会 会议笔记
- 小米2/2S刷基于Android 5.1.1的CM12.1系统教程
- linux僵尸进程产生的原因以及如何避免产生僵尸进程
- 【弹吉他必备的乐理知识】【2】节拍
- create volume
- Python私有属性
热门文章
- 基于Android校园失物招领系统
- python初学者代码示例_python入门(非常详细的教程)
- lab2物理内存管理实现
- Visualizing and Understanding Convolutional Networks - 可视化和理解卷积网络 - 看懂卷积网络
- Arrays.asList()抛错:UnsupportOperationException
- ppt可尝试修复此演示文稿_3个工具,可轻松创建演示文稿
- SpringBoot 自定义Starter(阿里云短信、消息推送)
- 常更新,记录一些常用的Linux软件
- vue中的 SPA 与 SSR 的使用场景以及element-UI、Nuxt.js 的使用
- 服务器布署(一):阿里云服务器,配合宝塔使用(网页端宝塔)