自学爬虫的初体验(一)
一、爬虫是什么
爬虫就是将互联网上的信息提取并下载到本地的过程
1、由客户端发起请求(url,data)
2、服务器响应内容(html、css、js、json)
请求方式:
1、GET
2、POST:需要发送相关的数据(包括但是不限于登录网站的密码)
二、requests库
1、一些基本用法
import requestsurl='https://www.csdn.net/'
res = requests.get(url)print(res)#<Response [200]>
print(res.content)#二进制文本流
print(res.content.decode('utf-8'))#解码:将二进制文本流转化为utf-8编码的普通字符串
print(res.text)#也是字符串,不过解码方式有所不同,更为适用
print(res.headers)#响应头信息
print(res.request.headers)#请求的头信息
print(res.status_code)#200 请求状态码
print(res.url)#https://www.csdn.net/
2、请求头信息
import requestsurl='https://www.bilibili.com/'
res=requests.get(url)
code=res.status_code
print(code)#200说明请求成功
有些网页不允许爬虫程序请求,code为503,因此需要修改请求头信息,将爬虫程序伪装成通过浏览器正常访问的用户:
headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
res=requests.get(url,headers)
code=res.status_code
print(code)
便能解决相关问题
3、POST请求
url='https://fanyi.baidu.com/sug'headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
data={'kw':'早'}
res=requests.post(url,headers,data)
print(res.content.decode('utf-8'))#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.text)#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('utf-8')==res.text)#Trueprint(res.status_code)#200
观看的教学视频使用了百度翻译作为例子,因此我也拿百度翻译练手。
与GET请求不同的是,POST请求需要你发送一个data,在百度翻译上体现出来就是这里发送的是需要翻译的对象:
data={'kw':'早'}
res=requests.post(url,headers,data)
结果却是:
print(res.text)#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('utf-8'))#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('gbk'))#{"errno":1000,"errmsg":"\u672a\u77e5\u9519\u8bef"}
print(res.content.decode('utf-8')==res.text)#True
print(res.content.decode('gbk')==res.text)#True
print(res.status_code)#200
print(res.json())#{'errno': 1000, 'errmsg': '未知错误'}
print(res.text.encode('utf-8'))#b'{"errno":1000,"errmsg":"\\u672a\\u77e5\\u9519\\u8bef"}'
很神奇,无论是用utf-8解码还是gbk解码再或者用.text返回的结果都是一模一样,错误代号1000,应该是哪里不太对,不过借此可以好好想想,解码编码之类的问题,很神奇。有大佬要是知道我哪里不对还请赐教。
自学爬虫的初体验(一)相关推荐
- python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...
小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...
- 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- Scrapy 爬虫框架初体验二 —— 以一个新闻站点爬取为例
一.搭建基础 Scrapy 工程框架 创建项目 输入如下命令: scrapy startproject NewsSpider # 创建项目 cd NewsSpider scrapy genspider ...
- scrapy 爬虫利器初体验(1)
目录 前言 scrapy 数据流 scrapy 组件 爬取豆瓣电影 Top250 后记 送书后话 前言 为什么要学 scrapy 呢?看下图,就清楚了.很多招聘要求都有 scrapy,主要是因为 sc ...
- 爬虫利器初体验 scrapy,爬取豆瓣电影
目录 前言 scrapy 数据流 scrapy 组件 爬取豆瓣电影 Top250 后记 送书后话 前言 为什么要学 scrapy 呢?看下图中的招聘要求,就清楚了.很多招聘要求都有 scrapy,主要 ...
- Scrapy 爬虫框架初体验三 —— 工程优化及其完善
一.工程优化及其完善 日志系统及定时过期删除日志文件 在工程目录中的 settings.py 添加如下修改: import logging from scrapy.utils.log import c ...
- 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验
一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...
- 一个课程,11个项目!爬虫初体验,快来!
<11 个案例开启 Python 爬虫初体验> <人人都能做的 Vue 3 记账本实战>
- xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验
影评许可证 公众号[2019]第22期 本栏目由"数据皮皮侠"独家呈献 专场 python爬虫实战--豆瓣电影get初体验 2019.10.28 / 早上7点场 / 免费 本期&q ...
最新文章
- Windows 10 Anaconda Python 3.7 安装 MXNet GPU版
- linux批量执行命令脚本,2.3-命令批量执行脚本
- 什么叫pin脚的pad_为什么特小尺寸液晶屏价格比较高
- Shiro学习总结(4)——Shrio登陆验证实例详细解读
- 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...
- android drawable-hdpi 分辨率,android – 设置可用于不同分辨率的drawable文件夹
- SuperMap iDesktop入门实战-张杰-专题视频课程
- dependencyManagement 失效
- 用python 创建英语自定义词典
- CentOS 7 安装 Weadmin(ITOSS)
- springboot 加载一个properties文件转换为对象、List和Map数据结构
- REVERSE关键字之REVERSE函数
- 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)
- Python环境配置与数据处理
- 西北乱跑娃 -- pycharm链接ssh ubuntu
- Java+jxbrowser+jna+js实现抖音很火的时钟桌面WallPaperEngine
- TDOA的matlab仿真
- 哪一位科学家建立了现代计算机的结构理论,考试D卷
- 命令线程windbg之使用!list指令遍历双向链表
- 使用CentOS 7+lightdm+Openbox+Chromium打造单功能用途电脑(大屏展示电脑)
热门文章
- android分享视频到微信,android 分享文本、图片、音乐、视频到微信朋友圈、好友、我的收藏...
- GTD时间管理学习day01---基本原理
- ubuntu18.4 浏览器无法上网
- 全屏css,CSS之全屏背景图
- Your branch and ‘origin/master‘ have diverged,
- 计算机专业29岁博士毕业,已经29岁了想去读博士晚不晚?
- android底部滑动出现虚拟按键,Android适配底部虚拟按键的方法详解
- 应用计算机测定线性电阻伏安特性实验器材,实验一电路元件伏安特性的测试
- __FILE__, __FUNCTION__, __LINE__学习篇,谨以此文告别那无知的岁月
- iOS开发——设置支持的iOS设备(512m内存以上设备)