status_code:HTTP请求返回的状态,200表示链接成功,404表示链接失败
text:HTTP响应内容的字符串形式,即 url对应的页面内容
encoding:从HTTP header中猜测的响应内容编码方式
apparent_encoding:从内容中分析出的响应编码方式(备选编码方式)
content:HTTP响应内容的二进制形式(图片还原等)
raise_for_status:如果状态码不是200,抛出HTTPError异常(判断网络连接是否成功)
headers:头部信息
*encoding和apparent_encoding的区别*
:encoding是从header获取编码方式,如果header中不存在charset,则默认其为ISO-8859-1,而apparent_encoding 是从相应的内容中分析其的编码方式,比encoding更为准确,r.text默认使用encoding的编码方式,如果显示不出来汉字,我们可以用r.encoding=r.apparent_encoding,使其更准确的编码
requests.ConnetionError:网络连接错误异常,如DNS查询失败、拒绝链接等
requests.HTTPError:HTTP错误异常
requests.URLRquired:URL缺失异常
requests.TooManyRedirects:超过最大重定向次数,产生重定向异常
requests.ConnecTimeout:链接远程服务器超时异常
requests.Timeout:请求URL超时
get(查)、
post(增,当携带的参数是字典或键值对的时候,默认放到form扁表单里,携带的是字符串时,放到data中)、
put(改和post差不多,但覆盖原有数据)、
delete(删)、head(头部)、patch(局部更新)、options(访问咨询)
put和patch的区别当只修改多个参数中的一个时,patch只需要修改修改的参数信息,而put则需要携带所有信息,不然未携带信息将会被删除,只剩put携带的信息
**kwargs中的控制参数:
try:
r=requests.request('get','http://www.baidu.com',timeout=30)
r.raise_for_status()//是否连接成功
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
网页:requests库
网站:Scrapy 库
全网:定制开发
网络爬虫排除标准(Robots Exclusion Srandard)
作用:网站告知爬虫那些网页可以抓取,那些不行
形式:网站根目录下的robots.txt文件(User-Agent:。。。 Disallow:。。。)
百度:http://baidu.com/s?wd=keyword
360: http://www.so.com/s?q=keyword
eg: r=requests.get('http://www.baidu.com/s',params={'wd':'python'})
r.request.url //查看请求地址 ==》http://www.baidu.com/s?wd="python'
import requests
url=''"
root="D//image//"
path=root+url.aplit('/')[-1] //倒序分割
try:
if not os.path.exists(root): //判断目录是否存在
os.mkdir(root)
if not os.path.exists(path): //判断文件是否存在
r=requests.get(url)
with open(path,'wb') as f:
f.write(r.content) //存入二进制
f.close()
print('保存文件成功')
else:
print(保存文件失败)
except:
print('获取失败')
ip地址查询网站:http://m.ip138.com
r=requests.get('r=requests.get('http://www.ip138.com/ips138.asp?ip=182.18.0.132',headers={'User-Agent':"Mozilla/5.0"})')
可以对html、xml格式进行解析,并且提取其中的相关信息
eg:from bs4 import BeautifulSoup
soup=BeautifulSoup(r.text,"html.parser") //把字符串解析成html格式
|解析器 |使用方法 |条件
|bs4的HTML解析器 |BeautifulSoup(mk,‘html.parser’) |安装bs4
|lxml的HTML解析器 |BeautifulSoup(mk,“lxml”) |pip install lxml
|lxml的XMl解析器 |BeautifulSoup(mk,“xml”) |pip install lxml
|html5lib的解析器 |BeautifulSoup(mk,‘html5lib’) |pip install html5lib
Tag:基本的信息组成单元,分别用<>>标明开头或结尾 ..
Name:便签的名字,
的名字是‘p’,格式:.name eg:soup.a(查看a标签的名字)soup.a.parent.parent(查看a标签的爷爷名字) 名字为str类型
Attributes:标签的属性,字典形式组织,格式:.attrs
NavigableString:标签内非属性字符串,<>…>标签中的字符串,格式:.string
Comment:标签内字符串的注释部分,一种特殊的Comment类型
XML INternet上的信息交互与传递 类似html
JSON 移动应用云端 和节点的信息通信,无注释 ,["a":''b"]
键值对形式,双引号,有两种格式:列表格式【】和字典格式 {}
YAML:各类系统的配置文件,有注释易读,无类型,缩进显示`
key:value
key:#Comment
-value1
-value2
key:
subkey:subvalue
返回一个列表类型,存储查询的结果
name:对标签名称的检索字符串
attrs:对标签属性值的检索字符串,可标注属性检索
recursive:是否对子孙全部检索,默认True
string:<> … >中的字符串区域的检索字符串
等价于
soup(.....)
等价于soup.find_all(...)