python爬虫知识小结

requests库入门

1.requests库的7个主要方法

requests.request() # 构建一个请求,支持以下的基础方法requests.get()

# 向服务器发起资源请求,对应HTTP中的GETrequests.head()

# 获取HTML网页头信息的方法,对应HEADrequests.post()

# post请求方法,对应于HTTP中POST方法requests.put()

# 向网页请求资源全部更新requests.patch()

# 向HTML页面请求部分资源更新requests.delete() # 请求HTML删除页面

2.requests方法具体介绍

由于在网页中我们一般只有requests.get()方法比较常用.

requests.get(url,params=None,**kwargs)

# url为HTTP请求资源的链接

# 额外参数,字典或字节流,可选

# **kwargs代表12个控制访问参数,如timeout等.

下面就介绍一下**kwargs的控制访问参数.

params:字典或字节序列,作为参数添加到url中.data:字典,字节序列或者文件对象,作为request内容json:JSON格式数据作为requests的内容headers:字典,HTTP定制头(常用)cookies:字典或CookieJar,Request中的cookieauth:元组,支持HTTP认证功能files:字典类型,传输文件timeout:设定超时时间,秒为单位proxies:字典类型,设定访问代理服务器,可以增加登录认证.allow_redirects:True/False,默认True,重定向开关stream:True/False,默认True,重定向开关.verify:True/False,默认True,认证SSL证书开关cert:本地SSL证书路径

所以我们可以这样理解,url就是我们的请求,而get方法返回的就是我们的response

3.Response对象的属性

r.status_code

# HTTP请求返回状态,200成功,404表示失败r.text # 以字符串的形式显示,url对应的HTML页面r.encoding # HTTP的header中猜测相应内容的编码方式r.apparent_encoding

# 从返回来的报文中得出响应内容的编码方式r.content # HTTP响应内容的二进制形式

4.requests库的异常

requests.ConnectionError # 网络连接错误异常

requests.HTTPError # HTTP错误异常

requests.URLRequired # URL缺失异常

requests.TooManyRedirects # 超过重定向次数

requests.ConnectTimeout # 连接超时异常

requests.Timeout # 请求超时异常

产生异常

r.raise_for_status() # 如果不是200,产生HTTPError异常

5.构造链接

一些网站经常会提供一些特定的接口给我们,完成查询或者搜索.我们就可以通过键值对和params参数构建完整的url链接.

In [25]: kv={'wd':'Python'} In [26]: r = requests.get("http://www.baidu.com/s",params=kv) In [27]: r.request.url Out[27]: 'http://www.baidu.com/s?wd=Python'

6.通用代码框架

import requestsdef getHTMLText(url): try: r = requests.get(url,timeout=30) # 设置请求时间 r.raise_for_status() # 抛出HTTPError异常 r.encoding=r.apparent_encoding # 获取编码从正文 return r.text # 就是对应HTML except: print("error") # 处理异常 return ""if __name__=="__main__": url = 'http://www.baidu.com' wb_data = getHTML(url)

7.示例

# 爬去图片保存在本地import requests path = '/home/disda/python/mooc爬虫教程/abc.jpg'url = "http://image.nationalgeographic.com.cn/2017/0331/20170331051027908.jpg" r=requests.get(url) with open(path,'wb') as f: f.write(r.content)

op

# 查询ip地址# coding:utf-8import requestsfrom bs4 import Beautiful url = "http://m.ip138.com/ip.asp?ip="wb_data = requests.get(url+'ip address') soup=BeautifulSoup(wb_data.text,'html.parser') kv={'class':'result'} soup.find(attrs=kv).string

robots.txt协议

1.来源审查

In [13]: r.request.headers

Out[13]: {'User-Agent': 'python-requests/2.12.4', 'Accept-Encoding': 'gzip, deflate', 'Connecti

通过判断User-Agent进行限制,检查来访HTTP头的User-Agent域,只响应浏览器请求和友好爬虫访问.

如果我们想伪造是浏览器访问,可以通过如下方式

kv={'User-Agent':'Mozilla/5.0'} r=requests.get(url,header=kv)

# 结果In [23]: r.request.headers Out[23]: {'User-Agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate',

'Connection': 'keep-alive', 'Accept': '*/*'}

2.查看网站的robots协议

robots协议告知所有爬虫网站的爬取策略,要求爬虫遵守.

In [17]: r=requests.get('http://www.jd.com/robots.txt') In [18]: print(r.text) User-agent: * Disallow: /?* Disallow: /pop/*.html Disallow: /pinpai/*.html?* User-agent: EtaoSpider Disallow: / User-agent: HuihuiSpider Disallow: / User-agent: GwdangSpider Disallow: / User-agent: WochachaSpider Disallow: /

3.准则

Beautiful Soup库入门

1.理解

Beautiful soup库时解析,遍历,维护”标签树”的功能库.

2.基本元素

3.基本格式

4.HTML标签内容的三种遍历方式

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180207A18UWD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券