【Python网络爬虫与信息提取】

一、Request库入门

1、Requests库的7个主要方法:

  1. requests.request():构造一个请求,支撑以下各方法的基础方
  2. requests.get():获取HTML网页的主要方法,对应于HTTP的GET
  3. requests.head():获取HTML网页头信息的方法,对应于http的head
  4. requests.post():向HTML网页提交POST请求的方法,对应于http的post
  5. requests.put():向HTML网页提交PUT请求的方法
  6. requests.patch():向HTML网页提交局部修改请求
  7. requests.delete():向HTML网页提交删除请求`

2、requests.get()方法

r = requests.get(url)

Response对象的属性:
  1. r.status_code:http请求的返回状态,200表示连接成功,404表示失
  2. r.text:http响应内容的字符串形式,即url对应的页面内容
  3. r.encoding:从HTTP header中猜测的响应内容编码方
  4. r.apparent_encoding:从内容中分析出响应内容编码方式(备选编码方式)
  5. r.content:http响应内容的二进制形式

3、使用get方法获取网络资源的基本流程:

使用r.status_code查看状态码,若是200,则继续用r.text、r.encoding、r.apparent_encoding、r.content去解析内容;若是404或其他,说明出错或产生异常

4、Requests库的异常

  1. requests.ConnectionError:网络连接 错误异常,如DNS查询失败,拒绝连接等
  2. requests.HTTPError:HTTP错误异常
  3. requests.URLRequired:URL缺失异常
  4. requests.TooManyRedirects:超过最大重定向次数,产生重定向异常
  5. requests.ConnectTimeout:连接远程服务器时超时异常
  6. requests.Timeout:请求URL超时,产生超时异常

通用代码框架

import requests


def getHTMLTest(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()  # 如果状态不是200,引发HTTPError异常
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return "产生异常"


if __name__ == "__main__":
    url = "http://www.baidu.com"
    print(getHTMLTest(url))

5、HTTP协议

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

    • 请求与响应模式:用户发起请求,服务器做出相关响应
    • 无状态:第一次请求和第二次请求之间并没有相关的关联
  • HTTP协议采用URL作为定位网络资源的标识。
    URL格式http://host[:port][path]
    host:合法的Internet主机域名或IP地址
    port:端口号,缺省端口为80
    path:请求资源的路径
    URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

6、requests.requesst()方法解析

requests.request(method, url, **kwargs)
  • method:请求方式,对应get/put/post等7种
  • url:拟获取页面的链接

二、网络爬虫引发的问题

1、网络爬虫的限制

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

2、Robots协议

  1. 形式:在网站根目录Robots.txt文件
  2. 约束性:Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险
  3. 类人行为可不参考Robots协议

Scrapy爬虫框架

1、spider

  • 解析Downloader返回的响应(Response)
  • 产生爬取项(scraped item)
  • 产生额外的爬取请求(Request)
  • 需要用户编写配置代码

2、Item Piplines

  • 以流水线方式处理Spider产生的爬取项
  • 由一组操作顺序组成的,类似流水线,每个操作是一个Item Pipline类型
  • 可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
  • 需呀用户编写配置代码

3、Scrapy常用命令

  1. *scrapy startprojecct <name> [dir]:创建一个新工程【常用】
  2. *scrapy genspider [options] <name> <domain>:创建一个爬虫【常用】
  3. scrapy settings [options]:获取爬虫配置信息
  4. *scrapy crawl <spider>:运行一个爬虫【常用】
  5. scrapy list:列出工程中所有爬虫
  6. scrapy shell [url]:启动URL调试命令行

4、产生一个scrapy爬虫框架操作步骤

  1. 建立一个Scrapy爬虫工程
  2. 在工程中产生一个Scrapy爬虫
  3. 配置产生的spider爬虫
  4. 运行爬虫,获取网页

5、yield关键字

  • 包含yield语句的函数是一个生成器
  • 生成器是一个不断产生值的函数
  • 生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值