爬虫入门—requests模块之搜狗首页下载
Author: Labyrinthine Leo
Init_time: 2021.02.16
Key Words: Spider
、requests库
公众号:Leo的博客城堡
1、requests
库
简介:requests
库是一款使用python
语言编写的常用的http
网络请求库,可以模仿浏览器发送网络请求,获取网页信息,功能强大,方便快捷。
1.1、request
库的下载
使用pip
安装,在命令行输入以下命令无报错即可。
pip install requests
1.2、requests
库的基本方法
requests.request(method, url, **kwargs)
:该函数/方法用于构建Request
对象。method
:该参数表示请求方式,如上图中的get/put/post
等7种网络请求方式。url
:拟获取页面的url链接。**kwargs
:控制访问的参数,可接收13个可选项。params
:用于get
方法访问时提交的请求参数data
:用于post
方法访问时提交的请求参数json
:JSON
格式的数据headers
:HTTP
定制头cookies
:字典格式或者CookieJar
格式,Request
中的cookie
auth
:元组,支持HTTP认证功能files
:字典类型,传输文件timeout
:设定超时时间,秒为单位proxies
:字典格式,设置代理IPallow_redirects
:默认为True,重定向参数stream
:默认为True,获取内容立即下载参数verify
:认证SSL证书参数cert
:本地SSL证书路径
requests.get(url)
:在函数内部自动构造一个向服务器请求资源的Request
对象,返回一个包含服务器资源的Response
对象。- 返回的
Response
对象中,包括多个属性,如上图所示:status_code
:表示返回头的状态码text
:HTTP响应内容的字符串形式,即页面源码encoding
:返回从响应头中猜测的响应内容编码方式apparent_encoding
:从内容中分析出的响应内容的编码方式content
:HTTP响应内容的二进制形式
- 返回的
2、requests
库的使用
2.1、requests
模块的编码流程:
- 指定url
- 发起请求
- 获取响应数据
- 持久化存储
2.2、实战演练(搜狗首页的下载)
- 目标:对搜狗网站首页(
https://www.sogou.com
)页面信息(如下图所示)进行爬取并将html代码保存到文件中。
- 编码:
# coding : utf-8
# fun : 爬取搜狗首页
# @Author : Labyrinthine Leo
# @Time : 2021.01.30
import requests
import json
def sougou_spider(url=None):
"""
爬取搜狗首页信息
:param url: 搜索链接
:return:
"""
if url is None:
print("url should not be None!")
return
# 1.指定url
url = url
# 2.UA伪装
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36'
}
# 3.发送请求
response = requests.get(url=url, headers=headers)
response.encoding = response.apparent_encoding # 矫正编码
# 4.获取响应的页面
page_text = response.text
# 5.持久化存储
fileName = './sougou.html'
with open(fileName,'w',encoding='utf-8') as fp:
fp.write(page_text)
print("信息爬取成功!")
if __name__ == '__main__':
# 设置网页url
url = "https://www.sogou.com/"
sougou_spider(url)
- 注意点:
- 普通的静态页面爬取,通常使用
get
方法,爬取的过程中网站最基础的反爬机制就是检测User-Agent
信息,即判断此次网络请求的是浏览器用户还是代码爬虫,因此在编写代码时,最基本的是在请求头添加User-Agent
信息,其为字典形式,通常是浏览器的标识。该方式,也叫UA伪装。 response.encoding = response.apparent_encoding
语句用于对响应页面的源码数据进行编码的矫正,防止在对页面信息存储展示时出现乱码现象。
临渊羡鱼不如退而结网
创作不易,如果您觉得这篇文章对你有用,可以点个赞,算是对笔者的支持和激励!这里是Leo的博客城堡,以Python为核,ML&DL为主,泛之形形色色,输寥寥拙见,摄浮光掠影,讲三两故事。临渊羡鱼,不如退而结网,持续干货输出,有趣的灵魂值得你的关注!
原文可以去笔者的github
主页:https://github.com/LabyrinthineLeo/Yxs_Git_Learning_repos
查看(如果可以,点个star
也无妨呀,嘿嘿)。