非常重要的前言
非常重要的前言
非常重要的前言
这是爬虫专栏的第一篇文章,即Python Requests库基础教程,也是以后我要在爬虫专栏更新内容的一个目录。
关于爬虫这一部分要写的东西实在是太多了,最近时间又变得非常少,我争取有时间就更吧。对这个专栏感兴趣、且手里有富余资金的,可以订阅一下,订阅的小伙伴,可以私信我一下,我们建群沟通各种爬虫知识与案例
这个专栏一定是爬虫这方面写的最全面的。包括但不限于以下内容,我会慢慢更新的哈
精通爬虫技术的各种Python 库讲解
:
Requests
: 获取网页内容、API数据等。
Beautiful Soup
:解析HTML和XML文档。
Scrapy
: 爬虫框架,使爬虫开发更加高效。
Selenium
: 模拟浏览器行为获取到动态生成的内容。
Pandas
: 处理和分析爬取的数据。
NumPy
: 数值计算和处理。
Matplotlib / Seaborn
: 用于数据可视化,更好地理解和展示爬取的数据。
Regex
: 正则表达式库,在文本中查找和匹配特定的模式,用于提取数据。
SQLite / SQLAlchemy
: 用于存储和管理爬取的数据,便于后续查询和分析。
IPython / Jupyter Notebook
: 以交互性和可视化的方式编写和测试爬虫代码。
爬虫实践过程中的各种抓包工具讲解
:
Fiddler
: 这是一个用于调试Web应用程序的免费抓包工具,可以查看HTTP和HTTPS请求、响应以及数据流。
Charles Proxy
: 类似于Fiddler,它是一个用于HTTP代理的工具,可以拦截和查看网络流量。
Burp Suite
: 主要用于Web应用程序安全测试,但也可以用作抓包工具,可用于查看和修改HTTP请求。
Postman
: 尽管主要用于测试API,但Postman还可以用作抓包工具,让您查看和测试HTTP请求和响应。
介绍
发送GET请求
发送POST请求
响应处理
Sessions和Cookies管理
身份验证
SSL证书验证
超时和重试
高级用法
性能优化
实际示例
进阶主题
最佳实践
这个Requests库可是个好东西!它就像是在你懒得亲自去网上请求数据的时候,找来的一个小助手。同样它也是Python编程的一大神器,使用Requests库可以轻松地从互联网上抓取各种信息,就像在自助餐厅里拿盘子一样简单。不管你想要从网页上爬取数据,还是和API打个招呼,Requests库都能让你在编程世界里畅通无阻。
想象一下,你是一个懒惰的人儿,宁愿窝在舒适的代码堆里,也不愿意亲自上网抓取数据。那么,Requests就是你的专属助手,它能用极简的代码帮你模拟浏览器,去网上按照你设置好的规则,完全自动的拜访网站,然后收集你需要的数据。就像是在虚拟世界里派个特工去为你搜集情报一样!
这家伙的用法也简单得不得了,就像是跟朋友聊天一样。你只需要告诉它要去哪个网站,它就会帮你把那里的数据搬回来。不管是文字、图片还是其他各种信息,它都能一股脑儿地给你搬回家。就好像是在网络世界里点外卖,你只需下单,它就会帮你送上门。
当然,别忘了在代码里小心谨慎,不要把自己当成网络暴徒哦。毕竟,Requests库的威力可是很大的,有点像是给了你一把强大的法杖,但你得用它来做好事,不要变成黑客大魔王。
用Requests库是因为它能让你从网络上拿到你想要的数据,不费吹灰之力。就好像是坐在沙发上点外卖,比亲自去餐厅要省心多了。
你想从某个网站上抓取一些新闻标题?不用愁,Requests来帮你!只需要几行代码,就能模拟浏览器去那个网站,然后把新闻标题拿回来,像是在市场上挑水果一样轻松。比如这样:
import requests
response = requests.get("https://www.example.com/news")
news_titles = response.text # 这里拿到的是网页的文本内容,还可以进一步处理
print(news_titles)
还有,如果你想和一个网站的API交流,获取实时数据,Requests也能搞定。就像是给朋友发短信一样,你只需要告诉Requests你要什么数据,它就会帮你搞定。比如,你想获取天气信息:
import requests
response = requests.get("https://api.example.com/weather?city=your_city")
weather_data = response.json() # 这里的数据是以JSON格式返回的,可以直接处理
print(weather_data)
上面例子中的网址都是假设的哈,如果你完整copy想要看结果,你需要换成自己的目标网址哈
安装Requests库就像把大象装冰箱一样简单,第一步,把冰箱门打开,第二步,大象放进去,第三步,把门带上。。。
步骤 1:打开终端或命令提示符
首先,你需要打开终端(在Windows上可能是命令提示符),如果在 Spyder 里面安装的话,就是右下角那种Console窗口。
步骤 2:使用pip安装Requests
在终端中,输入以下命令并按回车:
pip install requests
这会自动下载并安装Requests库。嗯,就这么简单!
步骤 3:验证安装
要验证安装是否成功,可以在终端中输入以下代码:
import requests
print(requests.__version__)
如果没有出现错误,并且你看到了Requests库的版本号,那就说明一切顺利!比如我的显示是下面这个:
runcell(0, 'E:/UserData/Desktop/untitled4.py')
2.28.1
当你发送一个简单的GET请求时,requests.get()方法会帮你建立一个连接到指定的网址,并返回一个Response对象,里面包含了服务器返回的各种信息。你可以通过response.text来获取网页的内容,通过response.status_code来获取响应的状态码,例如:
import requests
response = requests.get("http://www.baidu.com")
# 获取网页内容
content = response.text
# 获取响应状态码
status_code = response.status_code
print(content[:200]) # 打印网页内容的前200个字符
print(f"Status Code: {status_code}")
有时候,我们在请求网站的时候,需要告诉它我们想要什么特定的信息。就像你在餐厅点餐一样,要告诉服务员你想要什么菜。这时,我们可以在请求的网址上附加一些参数,让网站明白我们的需求。
假设我们想要在 www.baidu.com 上搜索关于 ‘Python’ 的内容,这就是我们的需求。让我们看看如何使用 requests 发送这个带参数的 GET 请求:
import requests # 引入信使
# 定义目标网址
url = "http://www.baidu.com/s"
# 定义参数
params = {
'wd': 'Python'
}
# 使用信使发送带参数的 GET 请求
response = requests.get(url, params=params)
# 查看响应内容
print(response.text)
这次,我们使用了一个特殊的参数字典 params,就像你在点餐时写下你想要的菜名一样。然后,requests 信使会帮你把这个参数附加在网址上,变成类似于 “http://www.baidu.com/s?wd=Python” 这样的网址,这样网站就知道你要搜索关于 ‘Python’ 的内容了!
首先,让我们来探讨一下Headers是啥玩意。
想象一下您去餐馆吃饭,点菜时服务员给您递上一张菜单,上面有菜名、价格等。那张菜单就是Headers的概念,它包含了请求或响应的元数据。比如,您在发送HTTP请求时,Headers可以告诉服务器您想要什么类型的数据,或者您有什么权限。就好比您点一份素食,在Headers里标明您不吃肉。
现在,让我们一步一步来看如何在发送GET请求时自定义Headers。
import requests # 别忘了叫小跑腿来
# 我们要去餐馆,也就是发送GET请求的网址
url = "https://jsonplaceholder.typicode.com/posts/1"
# 定制我们的Headers,就像是在餐馆里定制您的特殊需求
headers = {
"User-Agent": "My Custom User Agent",
"Authorization": "Bearer mysecrettoken"
}
# 告诉小跑腿,我们要去餐馆,还要带上定制的Headers
response = requests.get(url, headers=headers)
# 小跑腿完成任务后,会把餐馆的菜单(数据)告诉您
print(response.json())
import requests:咱们叫来了一个又强又能干的小跑腿,它会帮您发送请求和拿回响应。
url:就像是您要去的餐馆,这里我们去JSONPlaceholder这个地方。
headers:这是咱们自己定制的Headers,就像是您点菜时特别要求的那张菜单。我们使用了"User-Agent"来模拟您的浏览器信息,还用"Authorization"来表明您有权限。
response:小跑腿回来时,手里拿着餐馆的菜单(数据),它是一个包含了服务器响应信息的对象。
print(response.json()):小跑腿把餐馆的菜单(数据)展示给您看,这里我们用.json()来把响应转换成字典形式。
现在,我们要讲述的是如何用 requests 发送一个简单的 POST 请求。这东西就像是您雇佣的小跑腿,会帮您把包裹送到目的地。记得您得先在代码里导入它,这样您才能让它干活。以下是一段发送POST请求的代码,我会一行一行解释。
import requests # 首先导入小跑腿
# 咱们要送的包裹,以字典形式组织,数据是键值对,比如"姓名":"大白话"
package = {
"姓名": "大白话",
"内容": "您好,这是我给您送的数据包!"
}
# 目标网站的网址,咱们选了新浪微博
url = "https://www.weibo.com/"
# 告诉小跑腿,咱们要发个POST请求,把包裹交给它,它负责送到目的地
response = requests.post(url, data=package)
# 小跑腿完成任务后,会把目的地的反馈告诉您
print(response.text)
import requests:这行代码是咱们雇佣小跑腿的第一步,相当于叫它过来。
package:这是您的包裹,您可以随便往里装东西,这次咱给包裹装了一个“姓名”和“内容”。
url:这是您要送包裹的地方,咱们选了新浪微博,您也可以换成其他网站。
response:这是小跑腿完成任务后的回应,里面包含了目的地给咱们的反馈,比如是个"谢谢光临"还是"我已收到包裹"。
print(response.text):这行代码是咱们看小跑腿回来的回应,相当于您打开包裹,看看目的地给您回了什么信。
友情提示啊:上面这个POST请求如果你直接放进IDE里面提交的话,是不会返回什么有用的数据的,因为我只是举例子,真实情况下,weibo.com并不知道你提交上去的东西是什么玩意儿,如果我们真的去发送 post 请求的话,首先需要抓包,看一下人家都允许我们 POST 什么东西,我们在构建代码,那才是正确的哈!!
首先,咱们要明白一件事:发送POST请求就像是给服务器写信,只不过这次信是在网络上传输的。而JSON,嘿,它就像是这封信的格式,就像您写信时使用的信纸。
现在,让我们来看一下实际的代码,一步一步解释。
import requests # 别忘了叫小跑腿来
# 咱们要发送的信,也就是我们要传给服务器的数据
letter = {
"title": "我喜欢学习编程",
"body": "编程让我感觉好酷,我想成为一名优秀的开发者!",
"userId": 1
}
# 信要送到的地址,这里我们用JSONPlaceholder来模拟
url = "https://jsonplaceholder.typicode.com/posts"
# 现在,让小跑腿把信送到地址上,就像是把数据传给服务器
response = requests.post(url, json=letter)
# 小跑腿完成任务后,会把服务器的回复告诉您
print(response.text)
import requests:这就好像是您叫来了一个特别能干的小跑腿,它可以帮您在网络上传输数据。
letter:这个字典就像是您写的信,里面包含了您要告诉服务器的信息。我们用JSON格式是因为它在网络传输中很方便。
url:这就是信要送到的地址,我们用JSONPlaceholder这个地方来模拟服务器。
response:小跑腿送完信后,会拿到服务器的回复,它是一个包含服务器信息的对象。
print(response.text):这行代码就像是小跑腿把服务器的回复展示给您看,您可以知道服务器是不是收到了信。
以上内容更新于 2023年8月31日。