爬虫与数据分析

jupyter的基本快捷键

- a b 创建cell(a是在选择的cell上方创建cell,b是在下方)
- x dd 删除cell
- TAB 单词补全
- shift+tab 查看帮助信息
- y m 模式切换

爬虫的概念

- 通过编写代码来模拟浏览器操作,去互联网上爬取/获取数据的过程

爬虫的分类

- 通用爬虫 爬取一整张页面的数据
- 聚焦爬虫 想要获取局部数据,必须要建立在通用爬虫的基础上(数据解析)
- 增量式爬虫 实时监测网站上数据更新的情况,只爬取已经更新的数据

反爬机制

- 网站的公司或者个人制定了一系列的规则或策略阻止爬虫程序爬取数据

反反爬策略

- 通过改进爬虫程序来破解一些反爬机制,从而达到获取带有反爬机制网站的数据

robots协议

- 文本协议, 防君子不防小人

请求头

- User-Agent 请求载体的身份标识(华峰的身份证)
- Connection: close

响应头

# 响应数据类型
- Content-Type: text/json

fidder抓包工具

HTTP协议(https和加密方式)

- 协议的概念: 客户端与服务端进行交互的一种方式
- 加密方式:
    - 对称密钥加密
    - 非对称密钥加密
    - 证书密钥加密

requests模块

- 安装:
    - pip3 install requests
- 概念:
    - 模拟浏览器向网站服务器发送请求
- 作用:
    - 爬取数据
- requests模块的使用:
    - get
    - post
- 反爬机制:
    - UA检测
- 反反爬策略:
    - UA伪装
 

爬取数据的流程:

- 1.指定URL      url = "https://www.baidu.com"
- 2.发送请求     response = requests.get(url=url)
- 3.获取响应数据  page_text = response.text
- 4.持久化存储    with open('./file.html', 'w', encoding ='utf-8') as f:
              f.write(page_text)



第一个爬虫案例:

  

# 需求:爬取搜狗指定词条搜索后的页面数据(通过UA伪装对代码改进)

import requests
url = "https://www.sogou.com/web?query=学位"   #获取url
headers = {
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}    #UA伪装
response = requests.get(url=url,headers=headers)  #发送请求
response.encoding="utf-8"                                     #获取的数据提供编码方式
page_text = response.text                                      # 获取数据
with open('./sougou.html', 'w', encoding='utf-8')as f :  #长久保存
    f.write(page_text)

对上一个案例进行改进:

  查询的keyword允许自定义输入

import requests
word = input("请输入需要查询的关键字: ")
sougou_url = "https://www.sogou.com/web"
headers = {
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36"
}
params = {
    "query":word
}
response = requests.get(url=sougou_url,headers=headers,params=params)
response.encoding='utf-8'
page_text = response.text

with open('./daxiong.html','w',encoding='utf-8')as f:
    f.write(page_text)





















 
原文地址:https://www.cnblogs.com/echo2019/p/11116140.html