python网络爬虫基础知识

python网络爬虫基础知识

1、目标

掌握定向网络数据爬取和网页解析的基本能力
the website is the API (将网站作为API获得自己想要的数据)

2、学习过程

(1)、requests库
自动爬取HTML页面,自动向网络提交请求

(2)、robots.txt
网络爬虫排除标准

(3)、Beaytiful Soup库
解析HTML界面和信息内容,
(4)、Projects实战项目

(5)、Re 正则表达式库
提取特定网络信息
(6)、Scrapy框架
网络爬虫原理介绍,中规模的,爬取速度更快的网络爬虫框架

3、python程序开发工具(IDE)的选择

文本工具类: IDLE(自带默认常用入门级编辑器)、Sublime Text(多种编程风格,适用于专业程序员)
集成工具类: Pycharm、Anaconda & Spyder(开源免费集成开发框架)、Wing(公司维护、收费、适合多人共同开发)、Visual Studio&PTVS、Eclipse(需要具备一定开发经验)、Canopy(收费,适合科学计算和数据分析领域)

4、Requests库

Requests库一共提供了七个常用方法,除了requests方法外,其他都是通过调用requests方法来实现的
(1)、get方法

r = requests.get("http://www.baidu.com")      

#构造一个向服务器请求资源的Request对象,r是一个Response对象,该对象包含返回服务器的所有相关资源,爬虫返回的全部内容
requests.get(url,params=None,**kwargs)  
#url:拟获取页面的url链接;params:url中的额外参数,可以是字典或者字节流格式,是可选的
import requests              #调用Requests库
r = requests.get("http://www.baidu.com")            #用get方法访问网页
print(r.status_code)    #r.status_code检测HTTP请求的返回状态,如果状态码是200,则代表访问成功,404代表访问失败
print(type(r))                 #检测r的类型
print(r.headers)           #返回get请求获得页面的头部信息
r.encoding='utf-8'            
print(r.text)

Response对象的五个属性:
r.status_code #首先用这个方法来检查响应状态
r.text: url对应的页面字符串形式,以下四个方法是返回不同形式的网页
r.encoding: 从HTTP的header中猜测的响应编码方式
r.apparent_encoding: 网页备选编码,从HTTP的内容中猜测的响应编码方式
r.content: url对应内容的二进制形式

(2)、Requests库的异常
request.ConnectionError: 网络连接错误异常,如DNS查询失败,拒绝连接等
requests.HTTPError: HTTP协议层面出现的异常
requests.URLRequired: URL缺失异常
requests.TooManyRedirects: 超过最大重定向次数,产生重定向异常,常针对于复杂链接的访问错误
requests.ConnectTimeout: 仅指连接远程服务器超时异常
requests.Timeout: 请求URL超时,产生超时异常
Response对象的一个方法是raise_for_status:如果HTTP请求的返回状态不是200,那么就会产生异常requests.HTTPError

5、爬取网页的通用代码框架

加粗样式

import requests
def getHTMLText(url)
    try:
        r = requests.get(url,timeout=30)
        r.raise_for_status()     #raise_for_status()可以有效判断网络连接状态,产生异常的话就用try except框架来捕获异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"
if _name_ == "_main_":
    url = "http://www.baidu.com"
    print(getHTMLText())
    

这个框架可以使爬虫变得更稳定、有序、可靠

6、HTTP协议和Requests库的主要方法

Requests库的7个主要方法
requests.requests(): 构造一个请求,支持以下基本方法,以下方法均对应于HTTP的相关方法
requests.get(): 获取HTML网页的主要方法
requests.head(): 获取HTML网页头信息的主要方法
requests.post(): 向HTML提交POST请求的方法
requests.put(): 向HTML网页提交PUT请求的方法
requests.patch(): 向HTML网页提交局部修改请求
requests.delete(): 向HTML页面提交删除请求

HTTP协议: Hypertext Transfer Protocol,超文本传输协议,是一种基于“请求与响应”模式的,无状态(第一次请求与第二次请求之间无直接联系)的应用层协议。
HTTP采用url作为定位网络资源的标识。
url:是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
url格式:http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径

HTTP协议对资源的管理操作方法:
GET:获取url位置的资源
HEAD:请求获取URL位置资源的头部信息,适用于资源很大时
POST:向url位置的资源后增加新的数据
PUT:向url位置存取一个资源,覆盖原url位置的资源
PATCH:请求局部更新url位置的资源,即改变该处资源的部分内容,节省网络带宽
DELETE:请求删除url位置存储的资源

7、网络爬虫引发的问题

小规模: 数据量小,爬取速度不敏感。Requests库(爬取网页,玩转网页)
中规模: 数据规模较大,爬取速度缓慢,Scrapy库(爬取网站,爬取系列网站)
大规模: 搜索引擎,爬取速度关键,定制开发(爬取全网)

爬虫带来的问题:
骚扰问题:受限于编写水平和目的,网络爬虫会为web服务器带来巨大的资源开销,对网站运营者来说带来骚扰。
法律风险:侵犯网站的知识产权。
隐私泄露:可能突破简单的访问控制,获得被保护数据而泄露个人隐私。

限制网络爬虫的方法:
来源审查: 检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问。
发布公告: Robots协议,告知所有爬虫网站的爬取策略,要求爬虫遵守。

8、Robots协议

Robots Exclusion Standard:网络爬虫排除标准
作用:网站告知爬虫哪些页面可以抓取,哪些页面不行。
形式:在网站根目录下的robots.txt文件。
点击查看京东的robots协议

User-agent: *            #对任何的网络爬虫都应该遵守如下协议
Disallow: /?*            #任何爬虫都不允许访问以?开头的路径
Disallow: /pop/*.html         #任何爬虫都不允许访问pop/*.html
Disallow: /pinpai/*.html?*       #任何爬虫都不允许访问/pinpai/*.html?*
User-agent: EtaoSpider         # EtaoSpider 、HuihuiSpider 、GwdangSpider 、WochachaSpider 这四个网络爬虫不允许爬取京东的任何网页
Disallow: /              # /代表根目录
User-agent: HuihuiSpider 
Disallow: / 
User-agent: GwdangSpider 
Disallow: / 
User-agent: WochachaSpider 
Disallow: /

robots协议的基本语法:

User-agent: *       
Disallow: /

如果一个网站没有robots协议,那么就默认允许可以爬取所有页面。

Robots协议的使用:
网络爬虫:自动或人工识别robots.txt,再进行内容爬取。
约束性:Robots协议是建议但非约束性,网络爬虫可以不遵循,但存在法律风险。
类人行为可以不遵守Robots协议。

  • 7
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值