Python网络爬虫

Python可以高效开发网络爬虫,可用于信息搜集、数据分析、网站投票等功能。

文章介绍Python网络爬虫的基础概念和常用模块,爬虫实例参考文章:Python爬虫实例

一、基础概念

(一) 定义

网络爬虫,是一种按照一定规则,通过模拟客户端发送网络请求和接收响应,自动抓取网页信息的程序。只要是浏览器能做的事情,原则上爬虫都可以做。

我们常用的搜索引擎就是一个大规模的爬虫,获取的海量信息存储在数据库,当用户输入关键字进行查询时,搜索引擎通过索引快速返回结果。

(二) 分类

1.通用爬虫

通常指搜索引擎爬虫,基本工作原理:种子url列表抓取网页—数据存储—预处理提取关键信息—提供检索服务—网站排名(根据引用次数、点击次数等)

2.聚焦爬虫

针对特定网站的爬虫,基本工作原理:url列表—响应内容—提取url—提取数据—数据存储

当前页面的数据来源主要有三种:

  • 对当前url请求对应的响应中

  • 对其他url请求对应的响应中,比如ajax请求

  • 响应中的js脚本动态生成

只有第一种数据才可以通过爬虫获取,因为当前url地址呈现的内容和url请求直接获取的响应不一定相同,响应中可能会通过js动态加载一些图片、样式,而当前页面呈现的是这些内容加载后的结果。

二、常用模块

爬虫核心功能即模拟客户端行为发送请求,然后从响应信息中提取数据。发送请求过程最常用到的模块为 requests,提取数据过程可以根据网页结构和属性提取,使用模块 BeautifulSoup,也可以通过正则表达式提取,使用模块 re

(一) requests

1.基本使用

Python通用网络爬虫可以完成爬虫90%的工作,主要涉及requests模块的使用,requests的底层实现就是urllib,而且在Python2和Python3中通用。

requests对象的方法主要包括:request、get、post、head等,具体如下:

方法 含义 类型
request(method, url, **kwargs) 发送http请求,具体方法由method指定 Response
get(url, **kwargs) 发送http get方法请求 Response
post(url, **kwargs) 发送http post方法请求 Response
head(url, **kwargs) 发送http head方法请求 Response

方法中url为访问的网页url,**kwargs为控制访问的参数,共13个:

  • headers:请求头
  • params:请求参数
  • data:请求数据
  • cookies:携带cookies
  • json:JSON格式的请求数据
  • files:传输文件
  • timeout:请求超时时间,单位为秒
  • proxies:请求代理
  • allow_redirects:重定向,值为bool类型,默认为True
  • stream:获取内容立即下载,值为bool类型,默认为True
  • verify:认证SSL证书,值为bool类型,默认为True
  • cert:本地SSL证书
  • auth:支持HTTP认证

Response对象的常用属性:

属性 含义 类型
text content经过解码的数据 str
content Response的原始byte数据,没有经过解码 bytes
status_code 返回请求状态码 int
headers Response头信息 dict
request.xxx 返回对应的请求的方法和属性

注意:

  • response.text默认是ISO-8859-1编码 (可通过response.encoding查看),显示内容可能出现乱码,如果需要指定编码需要使用response.encoding="utf-8"指定,或者使用response.content.decode(“utf-8”),默认utf-8解码
  • 网页返回一整行json格式数据时,可以利用pycharm中Code-> Code Reformat Code,或者使用BeautifulSoup对象的prettify方法调整格式,使代码更易读
  • response.request.url与response.url不一定相同,比如重定向网站
  • request请求包中headers中User-Agent默认是python-requests/xxxxx,这导致很多网站返回结果与普通浏览器访问的不同,因此有必要在headers中模拟浏览器重新指定User-Agent
  • 爬虫要模仿浏览器的合法请求,并不是所有请求参数
  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值