零基础爬虫requests初阶教程,手把手教你爬数据

本文详细介绍了Python网络爬虫的基础知识,包括环境配置、requests库的使用、GET和POST请求的发送,以及如何处理反扒机制。通过实例展示了如何获取网页内容、处理Cookie和请求头,并提供了抓取二进制数据(如图片)的方法。同时,文章还探讨了知乎爬取的技巧,以及如何应对网站的反爬策略。

目录

一、环境与工具

二、学爬虫必备知识

三、简单体验 requests

四、get 请求

3.1 基础讲解一

3.3 基础讲解二

3.2 基础讲解三

3.4 获取cookie

3.5 获取请求头

3.6 添加请求头

3.5 知乎爬取+反扒技术

3.6 抓取二进制数据

3.7 美女私房照爬取( 准备发车)

四、 POST 请求

4.1 数据表单提交

4.2 添加请求头

4.3 提交json

4.4 普通文件上传


一、环境与工具

环境:jupyter
如果你没有安装该工具和不会使用,请看这一篇文章:pycharm安装配置与使用详细教程
可能还会需要这两篇文章:
1-亲测jupyter打不开浏览器
2-设置默认打开文件夹
模块安装:

!pip install requests

演示安装:

 安装完毕:

二、学爬虫必备知识

如果你python基础都不会,建议你先大佬写的python基础专栏:python全栈基础教程
他的基础专栏包括最基本的基础,re正则表达式,画图,文件处理,django,mysql操作处理等,如果你基础都不会,建议你先收藏本篇内容,去学完基础,再来看本篇文章。

三、简单体验 requests

以百度为例子:

网址:https://www.baidu.com/

import requests  

r = requests.get('https://www.baidu.com/')  
print(type(r))  
print(r.status_code)  
print(type(r.text))  
print(r.text)  
print(r.cookies)

运行结果:

输出结果得到了一个 Response 对象,然后分别输出了 Response 的类型、状态码、响应体的类型、内容以及 Cookies。或许在这里你还看不懂,那么请看下去,你会懂的!

四、get 请求

3.1 基础讲解一

还是以百度为例子:

网址:https://www.baidu.com/

为什么我这里只演示了百度?因为这个不会被反扒,如果被反扒,则会返回为空。大家可以试试别的网址,比如我的博客地址,基本返回为空。但不必担心,后续会学习并分享给大家有关反扒的。

我们用get请求网址,打印txt则获取到百度页面源码:

import requests 
r = requests.get('https://www.baidu.com/') 
print(r.text)

输出结果:

3.3 基础讲解二

我们以CSDN为例:

这里就直接使用requests模块的get函数直接来获取(get和urlopen是相同的),主要是这个更方便些:

import requests

r=requests.get('https://mp.csdn.net/mp_blog/manage/article')

print(r.status_code)#打印状态码
print(r.text)#打印文本
print(r.cookies)#打印cookie

运行结果:

 再举例子:

import requests

r=requests.post('https://www.csdn.net/?spm=1011.2124.3001.5359')
s=requests.put('https://www.csdn.net/?spm=1011.2124.3001.5359')

print(r.status_code)
print(r.text)
print(s.status_code)
print(s.text)

运行结果:

 虽然请求失败但不影响,主要是介绍下用requests模块的话,可以很简单的方式请求,比如说put,post,delete这些之间换一下就换了一个请求方法。这里之所以请求失败是因为我们被反扒了。 

3.2 基础讲解三

首先,构建一个最简单的 GET 请求,请求的链接为 http://httpbin.org/get,该网站会判断如果客户端发起的是 GET 请求的话,它返回相应的请求信息.
代码:

import requests  
r = requests.get('http://httpbin.org/get')
print(r.text)

运行结果:

 此时我们可以发现,我们成功发起了 GET 请求,返回结果中包含请求头、URL、IP 等信息。
那么,对于 GET 请求,如果要附加额外的信息,一般怎样添加呢?比如现在想添加两个参数,其中 name 是 germey,age 是 22。

要构造这个请求链接,是不是要直接写成:

r = requests.get('http://httpbin.org/get?name=germey&age=22')

这同样很简单,利用 params 这个参数就好了,示例如下:

import requests  

data = {  
    'name': 'germey',  
    'age': 22  
}  
r = requests.get("http://httpbin.org/get", params=data)  
print(r.text)

运行结果:

 通过返回信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值