python3.4.3的urllib模块init文件是空的,0KB

python3.4.3的urllib模块init文件是空的,0KB,第1张

Python 3 urllib 库的 __init__.py 确实是个空文件,没有问题的。蚂斗

如果楼主指洞是初学的话 我补充一下 || __init__.py 文件是每个 Python 包都必须有的,空文闷逗磨件也可以,不然 Python 不会识别为包

使用urllib来获取百度首页的源码

get请求参数,如果是中文,需要对中文进行编码,如下面这样,如果不编码会报错。

urlencode应用场景:多个参数的时候。如下

为什么要学习handler?

为什么需要代理?因为有的网站是禁止爬虫的宴薯肆,如果用真实的ip去爬虫,容易被封掉。

2.解析技术

1.安装lxml库

2.导入lxml.etree

3.etree.parse() 解析本地文晌轿件

4.etree.HTML() 服务器响应文件

5.解析获取DOM元素

1.路径查询

2.谓词查询

3.属性查询

4.模糊查询

5.内容查询

6.逻辑运算

示例:

JsonPath只能解析本地文件。

pip安装:

jsonpath的使用:

示例:

解析上面的json数据

缺点:效率没有lxml的效率高

优点:接口设计人性化,使用方便

pip install bs4 -i https://pypi.douban.com/simple

from bs4 import BeautifulSoup

1.根据标签名查找节点

soup.a.attrs

2.函数

find(‘a’):只找到第一个a标签

find(‘a’, title=‘名字’)

find(‘a’, class_=‘名字’)

find_all(‘a’) :查找到所有的a

find_all([‘a’手盯, ‘span’]) 返回所有的a和span

find_all(‘a’, limit=2) 只找前两个a

obj.string

obj.get_text()【推荐】

tag.name:获取标签名

tag.attrs:将属性值作为一个字典返回

obj.attrs.get(‘title’)【常用】

obj.get(‘title’)

obj[‘title’]

示例:

使用BeautifulSoup解析上面的html

urllib库是python内置的HTTP请求库,包含一下4个模块:

request :是最基本的HTTP请求模块,可以用来桥肆模拟发送请求。

error :异常处理模块,如果出现请求错误,可以捕获异常,然后进行重试或其他 *** 作以保证程序不会意外终止。

parse :一个工具模块,提供了许多URL处理方法,比如拆分、解析、合并等

robotparser :主要是用来识别网站的robots.txt文件,然后判断哪些网站可以爬,哪些网站不可以爬,一般用的比较少。

urllib.request模块提供了最基本的构造HTTP请求的方法,利用它可以模歼岁拟浏览器的一个请求发起内容。

以python官网为例:氏消睁

输出结果如下:

使用type()方法输出响应类型:

输出结果为:<class 'http.client.HTTPResponse'>

可以发现它是一个HTTPResponse类型的对象,主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法,以及msg、version、status、reason、debuglevel、closed等属性。

例如:调用read()方法可以得到返回网页的内容,调用status方法可以得到返回结果的状态码:

运行结果为:

urlopen函数的API:

data参数

data参数是可选的,如果使用,需要用bytes方法将参数转化为字节流编码,另外使用data后,请求方式就变成了POST方式

传递了一个参数word,值是hello。它需要被转码成bytes(字节流)类型。使用了bytes()方法,该方法第一个参数需要str类型,需要用urllib.parse模块里的urlencode()方法来将参数字典转为字符串,第二个参数指定编码格式。运行结果如下:

b'{\n "args": {}, \n "data": "", \n "files": {}, \n "form": {\n"word": "hello"\n }, \n "headers": {\n"Accept-Encoding": "identity", \n"Content-Length": "10", \n"Content-Type": "application/x-www-form-urlencoded", \n"Host": " httpbin.org ", \n"User-Agent": "Python-urllib/3.8", \n"X-Amzn-Trace-Id": "Root=1-60f81561-6376ab2566bb9e4525f0204e"\n }, \n "json": null, \n "origin": "111.164.173.185", \n "url": " http://httpbin.org/post "\n}\n'

timeout参数

timeout参数用于设置超时时间,单位为秒,意思是如果请求超出了设置的这个时间,还没有得到响应,就抛出异常。

运行结果:URLError: <urlopen error timed out>

因此可以设置超时时间,控制一个页面若长时间无响应,就跳过抓取,使用try except语句实现。

输出结果为TIME OUT。

其他参数:

context参数必须是ssl.SSLContext类型,用来指定SSL设置。

cafile和capth这两个参数分别指定CA证书和它的路径


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12256914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存