Python爬虫常用库、模块、类、函数积累(更新ing)_爬虫函数库-程序员宅基地

技术标签:   模块  Python  

总览

  • 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())

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45531423/article/details/103194781

智能推荐

3D目标检测-OpenPCDet使用realsense采集的.ply文件进行训练_realsense ply-程序员宅基地

文章浏览阅读518次,点赞10次,收藏7次。OpenPCDet的3D目标检测的初步实践环节_realsense ply

net framework 3.5怎么安装 / 无法安装怎么办_net framework 3.5无法安装-程序员宅基地

文章浏览阅读6.1w次,点赞14次,收藏80次。netframework3.5怎么安装以及netframework3.5无法安装的解决方法_net framework 3.5无法安装

可视化数据库管理工具:SQLPro Studio for Mac_mac 免费 sql 可视化-程序员宅基地

文章浏览阅读567次,点赞6次,收藏9次。它支持多种数据库类型,包括MySQL、PostgreSQL、SQLite等,方便用户进行数据库的管理和操作。SQLPro Studio for Mac提供了直观的界面和丰富的功能,使用户可以轻松地连接和管理数据库。用户可以通过该软件执行SQL查询、浏览和编辑数据、创建和管理数据库对象等操作。此外,SQLPro Studio for Mac还提供了数据导入和导出功能,方便用户在不同数据库之间迁移数据或与其他应用程序交换数据。_mac 免费 sql 可视化

自适应滤波-最小均方误差滤波_方差 误差滤波-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏14次。最小均方误差滤波原理低通滤波不能像中值滤波那样很好的滤除冲激噪声。因为低通滤波的最终结果混合了图像信号无关的噪声和信号本身。相反,中值滤波能够在保护图像边缘不受损失的情况下,滤除与图像信号无关的噪声。但是当噪声不完全和图像信号无关,比如被混合了图像本身信号和一定噪声的加性噪声或乘性噪声污染的图像,我们该如何消除此种噪声呢?或许需要构造一种更加智能的滤波。自适应滤波的提出就是为了解决上述问题。自适应滤波利用图像局部特性和结构自适应选择合适的方法滤除噪声。根据图像局部邻域统计信息自适应滤波的时候,如果我_方差 误差滤波

使用xlsx、xlsx-style导出表格添加背景色;合并单元格部分样式缺失问题解决_xlsx.utils 添加背景色-程序员宅基地

文章浏览阅读754次,点赞10次,收藏4次。我这个是直接通过传入dom生产的sheet页,也可以通过数据生成sheet页,xlsx都有对应的方法,其实不影响我们修改样式。主要关注addRangeBorder(给合并行列赋值样式)、setExcelStyle(设置导出Excel样式)这两个方法。由于上次写的修改样式只关注了单元格的宽度,并没有设置颜色以及没关注到合并的单元格部分样式没设置上等问题,所以这篇来说下。我们通过xlsx可以通过dom元素、或者数据来生产sheet页,然后我们修改样式就操作对应的sheet页就可以了。_xlsx.utils 添加背景色

python 自动化数据提取之正则表达式_python 正则 取token(1)-程序员宅基地

文章浏览阅读434次,点赞14次,收藏15次。如下案例:有一个字符串s,我们需要在字符串中匹配3个以上的数字,字符串中数字有8个,贪婪模式会尽可能匹配更多字符,3个以上,8个也是3个以上,那么这里匹配的结果就是8个数字。re.match尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的就是空。而re.search匹配整个字符串,直到找到一个匹配成功的则进行返回,如果整个字符串中都没有找到匹配成功的,则返回空。repl:匹配之后替换的新内容;

随便推点

RecyclerView GridLayoutManager 布局管理器 item 居中问题【完美】_android gridlayoutmanager 内居中-程序员宅基地

文章浏览阅读1.9k次。???? Hello,村长布局效果对比前后解决不居中的原因,我的 item 布局根容器使用的是 ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="wrap_content" android:layout_height="wrap_content"布局根容器使用 LinearLayout即可,必须同时指定 android:_android gridlayoutmanager 内居中

ZOJ--1010:Area(线段判交问题)_jerry, a middle school student, addicts himself to-程序员宅基地

文章浏览阅读1.1k次。AreaTime Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Jerry, a middle school student, addicts himself to mathematical research. Maybe the problems he has thought are rea_jerry, a middle school student, addicts himself to mathematical research. ma

Android 笔记:Duplicate finish request for ActivityRecord-程序员宅基地

文章浏览阅读3.3k次。之前写代码的时候没注意,在Activity的finish方法里调用了别的方法,后来又在那个方法里调用了finish,然后奇怪的现象出现了,app打不开,卡死,后来才发现,log里无限出现了Duplicate finish request for ActivityRecord,而且不是error形式出现,时间多一点就会出现ANR,所以这么写是会卡死的 @Override publi..._duplicate finish request for

Pytest和Allure测试框架-超详细版+实战_pytest allure-程序员宅基地

文章浏览阅读10w+次,点赞310次,收藏1.9k次。文章目录一:pytest的介绍,安装,框架结构,执行方式1,特点2,安装3, pytest的框架结构4,执行方式二:Pytest -断言、跳过及运行1,Pytest -断言、跳过及运行2,mark中的skip(跳过)3,mark中的xfail(失败)4,使用自定义标记mark只执行部分用例5,文件名类名方法执行部分用例6,-k 组合调用执行部分用例三, Pytest -fixture1. 如下: ..._pytest allure

Maven搭建私有仓库(私服)_maven私有仓库搭建-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏40次。作为一个非常优秀且我找不到合适的替代品的二进制包储存库,功能也是非常强大,不单纯只能设置Maven私有仓库。包括我们常见的Yum、Docker、npm、NuGel等等。专业版需要付费,个人用免费版就可以,专业版更加强大。_maven私有仓库搭建

Mac安装Git_mac git-程序员宅基地

文章浏览阅读9.6w次,点赞48次,收藏297次。文章目录一、简介二、下载指引三、配置信息一、简介在Mac上安装Git之前,可以先使用git --version来查看一下是否安装了Git,因为Mac系统可能自带了Git,或者在你安装XCode(或者XCode的命令行工具)时,可能已经安装了 Git。如果Mac还没有安装Git的话,则会跳出弹窗提示您安装Git。上述是因为在安装Homebrew时,自动下载安装了XCode的命令行工具,所以已经安装了Git。二、下载指引如果尚未安装Git,或者已安装的Git版本过低,这里我们可以去Git官网ht_mac git

推荐文章

热门文章

相关标签