一、爬虫是什么

爬虫就是将互联网上的信息提取并下载到本地的过程
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,应该是哪里不太对,不过借此可以好好想想,解码编码之类的问题,很神奇。有大佬要是知道我哪里不对还请赐教。

自学爬虫的初体验(一)相关推荐

  1. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...

    小猪的Python学习之旅 -- 4.Scrapy爬虫框架初体验 Python 引言: 经过前面两节的学习,我们学会了使用urllib去模拟请求,使用 Beautiful Soup和正则表达式来处理网 ...

  2. 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  3. Scrapy 爬虫框架初体验二 —— 以一个新闻站点爬取为例

    一.搭建基础 Scrapy 工程框架 创建项目 输入如下命令: scrapy startproject NewsSpider # 创建项目 cd NewsSpider scrapy genspider ...

  4. scrapy 爬虫利器初体验(1)

    目录 前言 scrapy 数据流 scrapy 组件 爬取豆瓣电影 Top250 后记 送书后话 前言 为什么要学 scrapy 呢?看下图,就清楚了.很多招聘要求都有 scrapy,主要是因为 sc ...

  5. 爬虫利器初体验 scrapy,爬取豆瓣电影

    目录 前言 scrapy 数据流 scrapy 组件 爬取豆瓣电影 Top250 后记 送书后话 前言 为什么要学 scrapy 呢?看下图中的招聘要求,就清楚了.很多招聘要求都有 scrapy,主要 ...

  6. Scrapy 爬虫框架初体验三 —— 工程优化及其完善

    一.工程优化及其完善 日志系统及定时过期删除日志文件 在工程目录中的 settings.py 添加如下修改: import logging from scrapy.utils.log import c ...

  7. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  8. 一个课程,11个项目!爬虫初体验,快来!

    <11 个案例开启 Python 爬虫初体验> <人人都能做的 Vue 3 记账本实战>

  9. xhr get获取文件流下载文件_python爬虫实战——豆瓣电影get初体验

    影评许可证 公众号[2019]第22期 本栏目由"数据皮皮侠"独家呈献 专场 python爬虫实战--豆瓣电影get初体验 2019.10.28 / 早上7点场 / 免费 本期&q ...

最新文章

  1. Windows 10 Anaconda Python 3.7 安装 MXNet GPU版
  2. linux批量执行命令脚本,2.3-命令批量执行脚本
  3. 什么叫pin脚的pad_为什么特小尺寸液晶屏价格比较高
  4. Shiro学习总结(4)——Shrio登陆验证实例详细解读
  5. 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...
  6. android drawable-hdpi 分辨率,android – 设置可用于不同分辨率的drawable文件夹
  7. SuperMap iDesktop入门实战-张杰-专题视频课程
  8. dependencyManagement 失效
  9. 用python 创建英语自定义词典
  10. CentOS 7 安装 Weadmin(ITOSS)
  11. springboot 加载一个properties文件转换为对象、List和Map数据结构
  12. REVERSE关键字之REVERSE函数
  13. 超详细的Git学习记录(Git基础内容/IDEA集成Git/GitHub/Gitee/GitLab及Centos7部署GitLab)
  14. Python环境配置与数据处理
  15. 西北乱跑娃 -- pycharm链接ssh ubuntu
  16. Java+jxbrowser+jna+js实现抖音很火的时钟桌面WallPaperEngine
  17. TDOA的matlab仿真
  18. 哪一位科学家建立了现代计算机的结构理论,考试D卷
  19. 命令线程windbg之使用!list指令遍历双向链表
  20. 使用CentOS 7+lightdm+Openbox+Chromium打造单功能用途电脑(大屏展示电脑)

热门文章

  1. android分享视频到微信,android 分享文本、图片、音乐、视频到微信朋友圈、好友、我的收藏...
  2. GTD时间管理学习day01---基本原理
  3. ubuntu18.4 浏览器无法上网
  4. 全屏css,CSS之全屏背景图
  5. Your branch and ‘origin/master‘ have diverged,
  6. 计算机专业29岁博士毕业,已经29岁了想去读博士晚不晚?
  7. android底部滑动出现虚拟按键,Android适配底部虚拟按键的方法详解
  8. 应用计算机测定线性电阻伏安特性实验器材,实验一电路元件伏安特性的测试
  9. __FILE__, __FUNCTION__, __LINE__学习篇,谨以此文告别那无知的岁月
  10. iOS开发——设置支持的iOS设备(512m内存以上设备)