Python网络爬虫-CFTA注册金融科技分析师一级考点

网络爬虫

概述

网络爬虫(Web Spider)又称网络蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

网络爬虫按照系统结构和实现技术,大致可分为一下几种类型:

Ø 通用网络爬虫:就是尽可能大的网络覆盖率,如 搜索引擎(百度、雅虎和谷歌等…)。

Ø 聚焦网络爬虫:有目标性,选择性地访问万维网来爬取信息。

Ø 增量式网络爬虫:只爬取新产生的或者已经更新的页面信息。特点:耗费少,难度大

Ø 深层网络爬虫:通过提交一些关键字才能获取的Web页面,如登录或注册后访问的页面。

注:实际工作中通常是几种爬虫技术结合实现。

应用场景

爬虫技术在科学研究、Web安全、产品研发、舆情监控等领域可以做很多事情。

在数据挖掘、机器学习、图像处理等科学研究领域,如果没有数据,则可以通过爬虫从网上抓取;

在Web安全方面,使用爬虫可以对网站是否存在某一漏洞进行批量验证、利用;

在产品研发方面,可以采集各个商城物品价格,为用户提供市场最低价;

在舆情监控方面,可以抓取、分析新浪微博的数据,从而识别出某用户是否为水军

学习爬虫前的技术准备

(1). Python基础语言: 基础语法、运算符、数据类型、流程控制、函数、对象 模块、文件操作、多线程、网络编程 … 等

(2). W3C标准: HTML、CSS、JavaScript、Xpath、JSON

(3). HTTP标准: HTTP的请求过程、请求方式、状态码含义,头部信息以及Cookie状态管理

(4). 数据库: SQLite、MySQL、MongoDB、Redis …

附加:IP代理池、请求header头转换,反爬技术,了解即可

关于爬虫的合法性

几乎每个网站都有一个名为robots.txt的文档,当然也有有些网站没有设定。对于没有设定robots.txt的网站可以通过网络爬虫获取没有口令加密的数据,也就是该网站所有页面的数据都可以爬取。如果网站有文件robots.txt文档,就要判断是否有禁止访客获取数据 如:taobao.com/robots.txt

Request库

Requests 库是一个非常容易上手的 python 爬虫库,相比于 “系统自带”的urllib 库, requests 库非常简洁。

Requests 库中有很多方法,但所有的方法在底层都是通过调用request方法来实现的。

Get请求

import requests

url = 'baidu.com'

response = requests.get(url)

print(response)

打印出来的结果是:<Response [200]>。<>表示这是一个对象,也就是我们这里获取的是一个response的对象,200表示状态码。

Post请求

post请求核心代码是requests.post(url,data={请求体的字典}),具体例子(百度翻译)如下:

import requests

url = 'fanyi.baidu.com'

data = {'from': 'zh',

'to': 'en',

'query': '人生苦短,我用python'

}

response = requests.post(url, data=data)

print(response)

data部分的参数,取自于页面NetWork→Headers→Form Data。打印出来的结果是:<Response [200]>。

response方法

获取网页的解码字符串

通过上述例子我们可以看到,不管是get请求还是post请求,我们得到的返回都是一个Response[200]的对象,但是我们想要得到的,应该是与网页response下一样的字符串对象,这时就需要用到response的方法了。

response.text。获取网页的HTML字符串,该方式往往会出现乱码,出现乱码使用response.encoding='utf-8'

import requests

url = 'baidu.com'

response = requests.get(url)

response.encoding = 'utf-8'

print(response.text)

response.content.decode()。把相应的二进制字节流转化为str类型。

import requests

url = 'baidu.com'

response = requests.get(url)

print(response.content.decode('gbk'))。

在这里我总结了一下三种获取网页源码的三种方式,通过这三种方式,一定可以获取到网页正确解码之后的字符串:

response.content.decode()

response.content.decode('gbk')

response.text

其他属性

import requests

response = requests.get("baidu.com")

print(type(response.requests.headers),response.requests.headers) #获取请求头

print(type(response.headers),response.headers) #获取响应头

print(type(response.cookies),response.cookies)#获取响应cookie

print(type(response.url),response.url) #获取响应url

print(type(response.requests.url),response.requests.url) #获取请求url

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值