| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 爬取12306火车票信息 -> 正文阅读 |
|
[网络协议]爬取12306火车票信息 |
1. 模拟游览器,防止被发现是爬虫;因为12306的反爬虫做得很严,以常规的爬虫方式无法爬取到所需信息,因此需要模拟成浏览器来对其进行访问,使用一个浏览器打开12306的官方网站,然后从控制台将COOKIE复制出来作为本项目的header headers = { ??? "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36", ??? 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', ??? 'Accept-Encoding': 'gzip, deflate, br', ??? 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8', ??? 'Cache-Control': 'max-age=0', ??? 'Connection': 'keep-alive', ??? 'Host': 'kyfw.12306.cn', ? ??'Referer': 'https://www.12306.cn/', ??? 'Sec-Fetch-Dest': 'document', ??? 'Sec-Fetch-Mode': 'navigate', ??? 'Sec-Fetch-Site': 'same-site', ??? 'Sec-Fetch-User': '?1', ??? 'Upgrade-Insecure-Requests': '1', ??? "Cookie": "_uab_collina=161396635873945822102574; JSESSIONID=631FB91746707366DCBBA5BE2C7453A1; BIGipServerotn=1106248202.24610.0000; RAIL_EXPIRATION=1614230065687; RAIL_DEVICEID=io7zYXeM-Gz8YUk5ZnOn0GjmqcUoFTj4kauIJForuflzNbyVp0X8kMyAxmqJYYJAhD8NCH3XBPNqdP3i225ICWhEvFl8Rr854pgCzjRbeBru9zok8pfJayROxlXHA4KMD4zV5AlBd8SqAbVVZbCvtviysCtLN_CH; BIGipServerpool_passport=165937674.50215.0000; route=c5c62a339e7744272a54643b3be5bf64; _jc_save_fromStation=%u5317%u4EAC%2CBJP; _jc_save_toStation=%u4E0A%u6D77%2CSHH; _jc_save_fromDate=2021-02-22; _jc_save_toDate=2021-02-22; _jc_save_wfdc_flag=dc", } 2. 条件输入查询 创建一个空白的车站列表便于运行爬虫后进行搜索和展示结果 def getcode(t): ??? while True: ??????? s1 = input("%s站:" % t) ??????? r1 = [] ??????? for id, station in stations.items(): ??????????? if s1 in station.values(): ??????????????? r1.append((id, station)) ??????? if r1: ??????????? break ??????? print("没有这个车站。") ??????? print("请重新输入。") ??? if len(r1) == 1: ??????? sid = r1[0][0] ??? else: ??????? print("你需要在以下车站里选择:") ??????? for i in range(len(r1)): ??????????? print(i + 1, r1[i][1]["cn"])#i代表所在元组,1代表元组后1位所对应的具体选项 ??????? sel = int(input("你的选择是:")) - 1 ??????? sid = r1[sel][0] ??? return sid 3.构造请求网址,上面输入的参数传入 qurl = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format( ??? chufatime, fromstation, tostation) 答:第一部分 result = [] ? ? ? ? ? |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:57:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |