首先先向小伙伴介绍一下HTTP中GET和POST

教小伙伴们写爬虫,通过POST获取网页内容

使用POST的原因:

GET是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。如果数据量不大(GET方式数据量限制1K),不带有保护数据的情况下使用GET方式访问WEB服务器;但是如果数据量大,而且带有需要保护的数据时使用POST方式访问WEB服务器。如果浏览器传送服务器的数据量超过1K,应使用POST方式访问服务器,因为POST方式向服务器传送是数据时,会先把传送的数据打包发送到WEB服务器。

编写爬虫:

了解了使用POST的原因,相信小伙伴们应该都明白哪种网页会使用POST。如下就是 中国铁路12306 的一个注册界面,注册界面包含了身份证、手机号、真实姓名这些非常重要的个人隐私,因此不能使用GET,只能使用POST。

打开这个页面后,按下F12键后点开NetWork(也就是图片中黑色部分的颜色加深部分),在这里可以清晰的看到URL和Requests Method,从而也得知了该页面就是通过POST从服务器传输的。

url = "https://kyfw.12306.cn/otn/ip/sec"

复制Form Dat中的所有内容,在Jupyter中写成字典

# -*- coding: utf-8 -*-

import requests

payload = {

'sig': '_6ad953cbe26b56bd9e4004ba081eef91e0d6e526a8f6bbeb1c84f7793946edc2bc4639a912bacef125f91dcf7b69a96f149bfa98ff0b2b9e550a64f0e33ec087eefb32133677856e6771555a5d60be012b5a9f23cd65fe8bbfbfc55872132578f449a3f15e7e92fc729273c0dea849249ce84343fd7183e7715ada090dd3dcc4026eae4920a2fe4d4c9bb77bdc285795cb2cb863c9835cab5be140482299f3f1d323279f801b550b',

'data': '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',

'action': 'r'

}

url = "https://kyfw.12306.cn/otn/ip/sec"

res = requests.post(url,data = payload)

print(res.text)

这样编写确实可以从服务器获取到内容,但是出现了乱码,我们需要解决它。

url = "https://kyfw.12306.cn/otn/ip/sec"

raw_data = urllib.request.urlopen(url).read()

charset = chardet.detect(raw_data) # {'confidence': 0.99, 'encoding': 'utf-8'}

encoding = charset['encoding']

res.encoding = encoding

'''其原理是获取页面中的coding,然后将获取到的coding赋给res.coding,也就是我们获取到的内容,从而解决乱码问题'''通过POST爬取到的内容

补充:urllib2在python3中换成了urllib.request

“ # -*- coding: utf-8 -*- ”必不可少,少了仍然会乱码

附完整代码:

# -*- coding: utf-8 -*-

import requests

payload = {

'sig': '_6ad953cbe26b56bd9e4004ba081eef91e0d6e526a8f6bbeb1c84f7793946edc2bc4639a912bacef125f91dcf7b69a96f149bfa98ff0b2b9e550a64f0e33ec087eefb32133677856e6771555a5d60be012b5a9f23cd65fe8bbfbfc55872132578f449a3f15e7e92fc729273c0dea849249ce84343fd7183e7715ada090dd3dcc4026eae4920a2fe4d4c9bb77bdc285795cb2cb863c9835cab5be140482299f3f1d323279f801b550b',

'data': '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',

'action': 'r'

}

url = "https://kyfw.12306.cn/otn/ip/sec"

res = requests.post(url,data = payload)

raw_data = urllib.request.urlopen(url).read()

charset = chardet.detect(raw_data) # {'confidence': 0.99, 'encoding': 'utf-8'}

encoding = charset['encoding']

res.encoding = encoding

print(res.text)CSDN-个人空间​me.csdn.netSina Visitor System​weibo.com

python爬取网页内容post_python爬虫之使用POST抓取网页内容相关推荐

  1. python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到 ...

  2. python动态页面元素爬取_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过浏览器审查元素解析真实网页地址...

    由于主流网站都使用JavaScript展示网页内容,和前面简单抓取静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,而是在HTML源码位置放上一段JavaScrip ...

  3. python爬取图片失败显示404_python3.7中Web抓取时出现http404错误

    我收到404错误代码(如下所示)当尝试对某个网站进行网页抓取时.在 我试着在不同的论坛上寻找答案,但找不到解决办法 有人有解决方案来修复这个404错误吗?>>> from urlli ...

  4. 如何用python爬股票数据_python爬虫股票数据,如何用python 爬虫抓取金融数据

    Q1:如何用python 爬虫抓取金融数据 获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为 ...

  5. [Python爬虫] 三、数据抓取之Requests HTTP 库

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...

  6. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

  7. python爬虫百度百科-python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

  8. Python爬虫实战六之抓取爱问知识人问题并保存至数据库

    大家好,本次为大家带来的是抓取爱问知识人的问题并将问题和答案保存到数据库的方法,涉及的内容包括: Urllib的用法及异常处理 Beautiful Soup的简单应用 MySQLdb的基础用法 正则表 ...

  9. Python爬虫包 BeautifulSoup 递归抓取实例详解

    Python爬虫包 BeautifulSoup 递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另 ...

最新文章

  1. React Native的TextInput组件去掉下划线和使用背景图片
  2. layui d多文件上传
  3. ARM--MDK5 Software Packs下载
  4. 如何将zipoutputstream返回_excel:vlookup如何区间查找?如何使用通配符?如何多条件查找?...
  5. 为何苦命干活的人成不了专家?
  6. 【AI面试题】逻辑回归如何处理多标签分类问题
  7. App设计之路——WebApp浅谈
  8. Presto为什么快
  9. sle4442,sle4428解
  10. P3356 火星探险问题
  11. python简易双人五子棋
  12. Python中随机漫步的实现
  13. Axure RP 10怎么卸载干净,Axure RP 10怎么在注册表卸载清除
  14. android studio 模拟器文件管理器
  15. Python过去计算机用户名,Django:如何获取客户端计算机用户名视图.py
  16. [linux] mv: cannot move $ to $: Directory not empty
  17. Android 4.4Phone的变化(二)
  18. weblogic BEA-000362问题
  19. PMP考试重点总结一——十五矩阵
  20. creo绘图属性模板_Proecreo完整制作工程图格式和模板

热门文章

  1. Axure交互样式的简单使用介绍
  2. 简单的几句PHP生成美团3周年砸金蛋抽奖代码
  3. 抢鲜体验:Oracle 19C单实例数据库安装步骤详解
  4. APM 飞行模式切换--源码详解
  5. [bzoj 4833]最小公倍佩尔数
  6. 原 农民工自学java到找到工作的前前后后
  7. 使用c语言实现的fifo程序,C语言实现标准FIFO
  8. audition cc变声插件_Adobe Audition CC怎么安装插件?
  9. OTA市场寡头竞争态势严峻,同程艺龙赴港IPO能否改变现状?
  10. MATLAB中PS是什么意思,matlab与pscad的区别