Python爬虫常用库、模块、类、函数积累(更新ing)

urllib库Python中的自带库,用来模拟HTTP发送请求requests库第三方库,使用前先进行安装。requests和urllib功能类似,用来模拟HTTP发送请求。requests是对urllib的再次封装,requests可以直接构建常用的get和post请求并发起,urllib一般要先构建get或者post请求,然后再发起请求。request库的7个主要方法:方法...
摘要由CSDN通过智能技术生成

总览

  • urlli库
    request模块
    request.urlopen函数
    request.urlretrieve函数
    urlencode函数
    parse_qs函数
    urlparse和urlsplit函数
    request.Request类
    request.ProxyHandler类
    request.HTTPCookieProcessor类
  • http.cookiejar库
    CookieJar类
    FileCookieJar类
    MozillaCookieJar类
    LWPCookieJar类
  • requests库
  • lxml
  • BeautifulSoup4
  • threading模块
  • CrawlSpider

urllib库

Python中一个最基本的网络请求库,可以模拟浏览器的行为,向指定的服务器发送HTTP请求,并且可以保存服务器返回的数据

request模块

在Python3 的urllib库中,所有和网络请求相关的方法,如urlopen,urlretrieve都被集到urllib.request模块

request.urlopen函数

在 urllib.request 模块下,可以打开被传入的url地址

from urllib import request

resp = request.urlopen("url",data)
print(resp.read())
参数 解释
url 请求的url
data 请求的data,如果设置了这个值,那么将变成post请求。
返回值 返回值是一个http.client.HTTPResponse对象,这个对象是一个类文件句柄对象。有read(size)、readline(读取一行)、readlines(读取多行)以及getcode(获取响应状态码)等方法

request.urlretrieve函数

可以将网页上的一个文件(网页、图片、视频、文档)保存到本地

from urllib import request

request.urlretrieve('url','filename'+picturename)
参数 解释
url 所下载的文件地址
filename 储存文件的名称,可以自定义。文件下载成功后与当前代码保存在同一目录
picturename 储存多个图片时给图片进行命名

3)urlencode函数:

可以将网络请求的url地址中的中文或其他特殊字符,转换成服务器可以识别的ASCII编码。
Http协议中参数的传输是"key=value"这种键值对形式的,因此,urlencode函数中传入的参数也必须为字典数据

from urllib import parse

data = {
   'name':'鹿温柔','greet':'hello world','age':18}
qs = parse.urlencode(data)
print(qs)

Http协议中参数的传输是"key=value"这种键值对形式的,因此,urlencode函数中传入的参数也必须为字典数据

4)parse_qs函数:

与urlencode相反功能的函数,对经过编码后的url参数进行解码

from urllib import parse

qs = "name=%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80&greet=hello+world&age=100"
print(parse.parse_qs(qs))

5)urlparse和urlsplit函数:

可以对一个url地址进行切割,获取到url地址中的各个组成

from urllib import request,parse

url =  'http://www.baidu.com/s?username=zhiliao'
result = parse.urlparse(url)
# result = parse.urlsplit(url)
print(result)

# 也可以单个打印url地址的组成
# print('scheme:',result.scheme)
# print('netloc:',result.netloc)
# print('path:',result.path)
# print('query:',result.query)

urlparse和urlsplit唯一不同的地方:urlparse里面多了一个params属性,而urlsplit中没有这个属性

6)request.Request类:

在发送请求的时候增加一些请求头来包装爬虫,必须使用request.Request类来实现

from urllib import request

url = "*******"
headers = {
   
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'
}
req = request.Request(url,headers=headers)
resp = request.urlopen(req)
print(resp.read())

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值