隋唐演义

隋唐演义

网络爬虫学习笔记

双十一 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

网络爬虫教学,网络爬虫从入门到精通,网络爬虫实战pdf,网络爬虫技术
    • Resuests库入门
      • request 库
      • 安装方法:
      • HTTP协议与Requests库的7个主要方法
        • HTTP协议
        • Requests库的7个主要方法
        • requests.request(method,url,**kwargs)
        • r = reuqests.get(url)
          • 【【淘密令】】对象的属性
          • 理解【【淘密令】】的编码
        • Requests库的head(url,**kwargs)方法
        • 【【微信】】s库的Post(url,data=None,json=None,**kwargs)方法
        • Requests库的put(url,data=None,**kwargs)方法
        • 【【微信】】ch(url,data=None,**kwargs)
        • request.delete(url,**kwargs)
      • 理解Requests库的异常
      • 小结:Request库入门
    • 网络爬虫引发的问题
      • 网络爬虫限制
      • Robots协议
        • Robots协议基本语法
        • 对Robots协议的理解
        • 小结
    • 实例
      • 一:京东商品信息爬取
      • 二、亚马逊商品页面爬取
      • 三、百度/360搜索关键词提交
      • 四、网络图片的爬取和存储
      • 五、IP地址归属地的自动查询
      • 单元小结
    • Beautiful Soup 库的安装
      • 测试
    • BeautifulSoup 库的基本元素
      • BeautifulSoup库的理解
      • BeautifulSoup库解析器
        • BeatufulSoup类的基本元素
        • 基于bs4库的HTML内容遍历方法
          • 标签树的下行遍历
          • 标签树的上行遍历
      • 基于bs库的HTML格式输出
      • 小结
    • 信息标记的三种形式
      • 信息的标记
      • HTML和其他的信息标记
      • 三种信息标记比较
      • 基于bs4库的HTML内容查找方法
        • 扩展方法
      • 小结
    • 实例
      • 实例一、“中国大学排名定向爬虫”实例介绍
    • 正则表达式库Re入门
      • 正则表达式的概念
      • 正则表达式的语法
        • 正则表达式的常用的操作符
        • 语法实例
        • 经典的正则表达式
      • Re库的基本使用
        • 调用方式
        • 表示类型:
        • 主要功能函数
          • re.search(pattern,string,flags)
          • re.match(pattern,string,flags)
          • re.findall(pattern,string,flags)
          • re.split(pattern,string,maxsplit,flags)
          • re.finditer(pattern,string,flags)
          • re.sub(pattern,repl,string,count=0,flags=0)
        • Re库的另一种等价用法
          • regex = re.compile(pattern,flags = 0)
          • 等价方法对应
        • match对象
        • match对象的常用方法
      • Re库的贪婪匹配和最小匹配
        • 贪婪匹配:
        • 最小匹配:
    • 实例
      • 淘宝商品比价定向爬虫实例介绍
        • 功能描述:
        • 程序的结构设计
    • Scrapy网络爬虫框架
      • scrapy安装
      • Scrapy爬虫框架结构
      • Scrapy爬虫框架解析
        • Engine 模块(不需要用户修改)
        • Downloader根据请求下载网页(不需要用户修改)
        • Scheduler 对所有爬虫爬取请求进行调度管理(不需要用户修改)
        • Spider(需要用户编写代码)
        • 【【微信】】
        • Spider Middleware(用户可以编写配置代码)
      • requests库和scrapy对比
        • 相同点:
        • 不同点
        • 选用那个技术路线开发爬虫
      • Scrapy常用命令
        • Scrapy命令行
        • Scrapy命令行格式
    • 实例
      • 演示HTML地址页面爬取
      • yield关键字
        • 生成器实例
    • Scrapy爬虫的基本使用
      • Scrapy爬虫的使用步骤
      • 涉及三各类:
        • Request类
        • 【【淘密令】】类
        • Item类
      • Scrapy爬虫提取信息的方法
        • CSS Selector基本使用

request库参考地址

地址2

  1. 管理员权限启动cmd
  2. 输入>> pip install requests

测试:

  1. 启动idle
  2. 输入命令

HTTP协议

HTTP,Hypertext Transfer Protocol,超文本传输协议。

HTTP是一个基于“请求与相应”模式的、无状态的应用层协议。

HTTP协议采用URL作为定位网络资源的标识。

HTTP协议的URL格式 http://host[:port][path]

host:合法的Internet主机域名或IP地址

port:端口号,缺省端口为80

path:请求资源的路径

HTTP URL实例

http://www.bit.edu.cn

http://220.181.11.188/duty

HTTPURL的理解:

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。

HTTP协议对资源的操作

方法说明
GET请求获取URL位置的资源
HEAD请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST请求向URL位置的资源后附加新的数据
PUT请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH请求局部更新URL位置资源,即改变该处资源的部分内容
DELETE请求删除URL位置存储的资源

理解patch和put的区别

假设URL位置有一组数据UserInfo,包含UserID、UserName等20个字段。

需求:用户修改了UserName,其他不变。

采用patch,仅向URL提交UserName的局部更新请求。

采用PUT,必须将所有20个字段一并提交到url,未提交字段被删除

patch节省网络带宽

Requests库的7个主要方法

方法说明
reuqests.request()构造一个请求支撑以下各方法的基础方法
reuqests.get()获取html页面的主要方法,对应于http的get
reuqests.head()获取http网页头信息的方法,对应于http的Head
reuqests.post()向http页面提交post请求,对应http的head
reuqests.put()向http页面提交put请求,对应http的post
reuqests.patch向html页面提交局部修改请求,对应于http的patch
reuqests.delete()向html页面提交删除请求,对应于http的delete

HTTP协议与Requests库方法

HTTP协议方法Requests库方法功能一致性
GETreuqests.get()一致
HEADreuqests.head()一致
POSTreuqests.post()一致
PUTreuqests.put()一致
PATCHreuqests.patch一致
DELETEreuqests.delete()一致

requests.request(method,url,**kwargs)

  1. method:请求方式,对应get/put/post等7种

r = requests.request(‘GET’,url,**kwargs)

r = requests.request('HEAD,url,**kwargs)

r = requests.request(‘POST’,url,**kwargs)

r = requests.request(‘PUT’,url,**kwargs)

r = requests.request(‘PATCH’,url,**kwargs)

r = requests.request(‘DELETE’,url,**kwargs)

r = requests.request(‘OPTIONS’,url,**kwargs)

  1. url:获取页面的url连接
  2. **kwargs:控制访问参数,共13个,均为可选项
  • params:字典或字节序列,作为参数增加到url中
  • data:字典、字节序列或文件对象,作为Request的内容
  • json:JSON格式的数据,作为Request的内容
  • 【【微信】】:字典,HTTP定制头
  • cookies:字典或CookieJar,Request中的cookie

  • auth:元组,支持HTTP认证功能

  • files:字典类型,传输文件

  • timeout:设定的超时时间,以秒为单位
  • proxies:字典类型,设定访问代理服务器,可以增加登录认证
  • 【【微信】】:True/False,默认为True,重定向开关

  • stream:True/False,默认为True,获取内容立即下载开关

  • verify:True/False,默认为True,认证SSL证书开关

  • cert:保存本地ssl证书路径

r = reuqests.get(url)

构造一个向服务器请求资源的Request对象(Request)

返回一个包含服务资源的【【淘密令】】对象(【【淘密令】】)

主要参数列表

【【微信】】(url,params = None,**kwargs)

  • url:你获取页面的url连接
  • params: url中的额外参数,字典或字节流格式,可选
  • *kwargs:12个控制访问的参数(同requests.request()函数除params*外的字段)

**【【淘密令】】对象:**包含爬虫返回的全部内容

【【淘密令】】对象的属性
属性说明
r.status_codehttp请求的返回状态,200表示连接成功,404表示失败
r.texthttp响应内容的字符串形式,即url对应的页面内容
r.encoding从http header中猜测响应内容编码方式
r.apparent_encoding从内容中分析出的相应内容编码方式(备选编码方法)
r.contentHttp相应内容的二进制形式
code=200
code=404或其他
请求
r.status_code
r.text ,r.encoding,r.apparent_encoding
某些原因出错将产生异常
理解【【淘密令】】的编码
属性说明
r.encoding从http header中猜测响应内容编码方式
r.apparent_encoding从内容中分析出的相应内容编码方式(备选编码方法)

r.encoding:如果header中不存在charset,则认为编码为’ISO-8859-1’

r.apparent_encoding:根据网页内容分析出的编码方式

Requests库的head(url,**kwargs)方法

**kwargs与requests.request方法完全一样

【【微信】】s库的Post(url,data=None,json=None,**kwargs)方法

  • url:拟更新页面的url
  • data:字典、字节序列或文件,Request的内容
  • JSON格式的数据,Request的内容
  • **kwargs:11个访问控制参数(同requests.request()的控制访问参数去除data和json)

向URL POST一个字典,自动编码为form(表单)

向URL POST一个字符串,自动编码为data

Requests库的put(url,data=None,**kwargs)方法

  • url:拟更新页面的url连接
  • data:字典、字节序列或文件,Request的内容
  • **kwargs:12个控制访问的参数

【【微信】】ch(url,data=None,**kwargs)

  • url:拟更新页面的url连接
  • 字典、字节序列或文件,Request的内容
  • **kwargs:12个控制访问参数

request.delete(url,**kwargs)

  • url拟删除页面的url连接
  • **kwargs:13个控制访问的参数

Request对象

异常说明
requests.ConnectionError网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPErrorHTTP错误异常
requests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向次数,产生重定向异常
requests.ConnectTimeout远程连接服务器超时
requests.Timeout请求URL超时,产生超时异常

【【淘密令】】对象

异常说明
r.raise_for_status()如果不是200,产生异常requests.HTTPError
<