博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【爬虫】1初学Python网络爬虫
阅读量:3917 次
发布时间:2019-05-23

本文共 3026 字,大约阅读时间需要 10 分钟。

初学Python网络爬虫

1、背景

内容主要参考北京理工大学嵩天老师的《Python网络爬虫与信息提取》课程,不想看视频,自学能力强的就直接看PPT了

在这里插入图片描述
课程实例如下:
课程实例
python开发工具选择为:pycharm+Anaconda

2、爬虫规则

Request库——自动爬取HTML页面、自动网络请求提交

(1)安装Request库

安装略过,测试代码如下:

// 爬虫代码示例1import requestsr = requests.get("http://www.baidu.com")print(r.status_code)print(r.text)

结果如下:

在这里插入图片描述

现在还暂时看不懂这些代码及结果,先不管。

Requests库的7个主要方法如下所示:

在这里插入图片描述

(2)Requests库的get()

在这里插入图片描述

其中,Response对象包含爬虫返回的内容,具体参数如下:
在这里插入图片描述

// 爬虫代码示例2import requestsr = requests.get("http://www.baidu.com")print(r.status_code)# print(r.text)print(type(r))print(r.headers)

结果如下所示:

200
{'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sat, 16 Jan 2021 11:34:03 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:27:29 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}

所以Response对象包含服务器返回的所有信息,也包含请求的Request信息。

a. Response对象的属性

在这里插入图片描述

简单来说,首先用r.status_code看一看返回的是不是200,是的话才能用r.text、r.encoding、r.apparent_encoding、r.content,否则返回的是404的话,可能是某些原因出错产生异常。
一个demo如下:
在这里插入图片描述
下面理解一下Response的编码
r.encoding——如果header中不存在charset,则认为编码为ISO-8859-1
r.text根据r.encoding显示网页内容r.apparent_encoding——根据网页内容分析出的编码方式可以看作是r.encoding的备选

b. 爬取网页的通用代码框架

首先需要理解Requests库的异常,因为网络连接是有风险的:

在这里插入图片描述
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try‐except进行异常处理
在这里插入图片描述
爬取网页的通用代码框架如下:

import requestsdef getHTMLText(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(getHTMLText(url))

注意! url = "www.baidu.com"会报错

(3)HTTP协议及Requests库方法

HTTP协议:Hypertext Transfer Protocol,超文本传输协议,是一个基于“请求与响应”模式的、无状态的应用层协议,协议采用URL作为定位网络资源的标识,URL格式如下:

在这里插入图片描述
其中:

参数名 Value
host 合法的Internet主机域名或IP地址
port 端口号,缺省端口为80
path 请求资源的路径

URL实例例如:

  • http://www.bit.edu.cn
  • http://220.181.111.188/duty

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

在这里插入图片描述
下面介绍HTTP协议对资源的操作:
在这里插入图片描述
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
在这里插入图片描述
HTTP协议与Requests库功能是一致的,可以认为六种方法是等价的。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

(4)Requests库主要方法解析

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

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)

url: 拟获取页面的url链接

**kwargs: 控制访问的参数,共13个,控制访问的参数,均为可选项

  • params: 字典或字节序列,作为参数增加到url中
    在这里插入图片描述
  • data : 字典、字节序列或文件对象,作为Request的内容
    在这里插入图片描述
  • json: JSON格式的数据,作为Request的内容
    在这里插入图片描述
  • headers : 字典,HTTP定制头
    在这里插入图片描述
  • cookies : 字典或CookieJar,Request中的cookie
  • auth: 元组,支持HTTP认证功能
  • files : 字典类型,传输文件
    在这里插入图片描述
  • timeout : 设定超时时间,秒为单位
    在这里插入图片描述
  • proxies : 字典类型,设定访问代理服务器,可以增加登录认证
    在这里插入图片描述
  • allow_redirects: True/False,默认为True,重定向开关
  • stream : True/False,默认为True,获取内容立即下载开关
  • verify : True/False,默认为True,认证SSL证书开关
  • cert: 本地SSL证书路径

不用记住。总而言之,**kwargs: 控制访问的参数,均为可选项 。

之前的get函数:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内容参考来源: .

转载地址:http://ugvrn.baihongyu.com/

你可能感兴趣的文章
GraphQL:DataLoader的神奇
查看>>
Beetlex之tcp/tls服务压测工具
查看>>
如何在 ASP.NET Core 中使用 Route 特性
查看>>
为 CefSharp 应用内置 C++ 运行环境并启用 AnyCPU 支持
查看>>
解决ASP.NET Core部署到IIS,更新项目"另一个程序正在使用此文件,进程无法访问"...
查看>>
.NET 云原生架构师训练营(模块二 基础巩固 REST && RESTful)--学习笔记
查看>>
2020 .NET 开发者峰会顺利在苏州落幕,相关数据很喜人以及线上直播回看汇总
查看>>
C# 中 ConcurrentDictionary 一定线程安全吗?
查看>>
划入 .NET 6版本目标,微软鼓励开发人员信任第三方库
查看>>
龙芯.NET正式发布 开源共享与开发者共成长
查看>>
【.Net core】EFCore——Code First生成数据库与表
查看>>
跟我一起学Redis之高可用从主从复制开始
查看>>
调试实战 | 通过转储文件分析程序无响应之使用 windbg + IDA 逆向篇
查看>>
如何在 C# 中使用 委托
查看>>
Abp vNext 后台作业hangfire
查看>>
【Azure Show】|第九期 “我的计算机入门之路” 嘉宾秦婷婷&汪宇杰&文轩
查看>>
Dotnet Core多版本API共存的优雅实现
查看>>
如何在 ASP.NET Core Web API 中以三种方式返回数据
查看>>
开源项目葫芦藤:IdentityServer4的实现及其运用
查看>>
Abp vNext异常处理的缺陷/改造方案
查看>>