python——requests+xpath实现爬虫

一、简介

        爬虫,英文为Spider,译为“网络蜘蛛”。爬虫是一种按照一定规则,自动抓取互联网信息的程序或脚本。在我们身边其实就有很多爬虫,例如百度、谷歌、搜狗等搜索引擎都是大型网络爬虫。

二、分类

        按照爬虫对象,可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫和深层网络爬虫等。

        通用网络爬虫又称为全网爬虫,因其能爬的范围和数量巨大,导致其存在速度较低和所需存储空间较大的缺陷,其主要的应用场景为大型搜索引擎。通用网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库和链接过滤模块等构成。

        聚焦网络爬虫又称主体爬虫,与通用网络爬虫不同的是,聚焦网络爬虫依据主体,爬取特定网页,具有爬取速度快和占用网络资源少等特点。

增量式网络爬虫是爬取新产生的页面或发生变化的页面,对未发生变化的页面不进行爬取。这种方式虽然有效减少了数据下载量,但其实现算法的难度也随之增加。

        深层网络爬虫指不能通过静态URL链接进行爬取信息,需要提交一定的关键字,才能访问更深层次的页面。深层网络爬虫主要由六个基本功能模块(爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS控制器)和两个爬虫内部数据结构(URL列表、LVS表)等部分构成。其中 LVS(LabelValue Set)表示标签/数值集合,用来表示填充表单的数据源。

三、爬虫技术

1、请求库

        爬虫常见的请求库主要由requests和urllib,下面只对requests库进行阐述,因requests是基于urllib所实现的HTML库。

1.1 requests库简介

        Requests是Python中的第三方库,是基于urllib,采用Apache2 Licensed开源协议的 HTTP 库。requests用于发送HTTP请求(以下简称URL),并获取响应数据。因urllib的代码臃肿,实现功能逻辑较为繁杂,所以衍生出requests模块。常常应用于爬虫中对网页内容的下载。

        Requests访问HTTP会创建request对象(请求)和response对象(响应)。

1.2 安装环境

        因Requests是Python的第三方库,所以需要手动安装Requests环境。当使用VsCode作为编译工具时,可以在VsCode的“终端”窗口输入安装命令即可(如果遇到安装失败的情况,可以重试几次,具体原因不详)。

pip install requests
1.3 请求方法
1.3.1 requests.request()

        Request()是所有请求方法的基本方法。其代码格式为:

import requests

"""request()"""
url = "http://www.baidu.com/"
req = requests.request('get',url)

        request()方法主要的参数有:

        Method:可选参数,字符串类型,用于指定请求所使用的方法,包括GET、POST、PUT、DELETE等。

        url:可选参数,字符串类型,用于设定请求资源的接口(API),或者说是请求网页的网址。

        params:可选参数,字典类型,用于GET请求的查询参数。例如:

'''params参数'''
# 例如通过百度搜索“伊朗”
url = "http://www.baidu.com/s"
params = {'wd':'伊朗'}
req = requests.get(url,params=params)

        data:可选参数,字典类型,常用于POST、PUT、DELETE等方法提交的表单参数。

        json:可选参数,字典类型,用于上传json数据的参数,被封装到body(请求体)中。请求头的Content-Type默认设置为application/json。

        files:可选参数,字典类型,是指定files用于上传文件,一般使用POST方法,默认请求头content-type为‘multipat/from-data类型。’

        headers:可选参数,字典类型,用于设定user-agent、refer等请求头。能够模拟浏览器向服务器发起访问。

        Auth:可选参数,元组类型,用于授权的用户名和口令,格式为(‘username’,’password’)

        timeout:可选参数,用于设置超时时间,单位为“s”

        verify:True/False,默认为True,判断是否需要进行HTTPS证书验证,如果为True,则需要自己设置证书地址

        allow_redirects:True/False是否让requests做重定向处理,默认True

        cookies:附带本地的cookies数据

        cert:本地SSL证书路径

1.3.2 其他请求方法

        其他请求方法与request()方法用法类似,不做过多说明。

方法

内容

delete(url, args)

向网页提交删除请求

get(url, params, args)

获取html网页的主要方法

head(url, args)

获取html网页头信息

patch(url, data, args)

向html网页提交局部修改请求

post(url, data, json, args)

向网页提交post请求

put

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值