栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫

 一、介绍与库安装


爬虫:通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程

分类:

    通用爬虫:抓取系统重要组成部分,抓一整张页面数据
    
    聚焦爬虫:抓取页面特定的局部内容
    
    增量式爬虫:检测网站中数据跟新的情况,只抓取网站中最新更新的数据
    
robots.txt协议:

    君子协议,规定了网站中可以爬取的数据
 
超文本传输协议  

http协议:

    服务器与客户端进行数据交互的形式
    
常用请求头信息:

    user-agent:请求载体的标识
    
    UA伪装:门户网站的服务器会检测请求载体的身份标识,如果请求载体身份是一款浏览器则正常,如果不是浏览器(则是基于爬虫的)则不正常,服务器可能拒绝该次请求
    
    connection:请求完毕后,是断开连接还是保持连接
    
常用响应头信息:

    Content-Type:服务器响应回客户端的数据类型
    
https协议:

    安全的超文本传输协议,经过数据加密
    
加密方式:

    1. 对称密钥加密:客户端将加密后数据与解密方式传输给服务器
    
    2. 非对称密钥:让服务器设定好加密方式,客户端按照该方式加密后传输密文(公钥加密私钥解密)
    
    弊端:中间截取服务器传给客户端的公钥后,进行修改导致出错
    
    3. 证书密钥加密:加入三方机构(证书认证机构),服务器将公钥发送给证书认证机构,在上面进行数字签名后发送给客户端
    
    解决了修改公钥的漏洞,客户端只认可有数字签名的公钥
    
## 环境安装pip3 install requests
requests模块:模拟浏览器发请求

import requests

二、库使用与爬虫基本步骤

爬虫基本步骤
# coding = utf-8
# 需求:爬取淘宝首页的页面数据
import requests
if __name__ == "__main__":
#     step1:指定url
    url = 'https://www.taobao.com/'
#     step2:发起请求,response接收get方法返回的响应对象
    response = requests.get( url =url)
#     step3:获取响应数据,text属性返回字符串形式的响应数据
    page_txt = response.text
    print(page_txt)
#     step4:持久化存储
    with open('./taobao.html','w',encoding='utf-8') as fp:
        fp.write(page_txt)
    print(type(page_txt))

UA伪装

发送参数与响应

让爬虫对应的请求载体身份标识伪装成某一款浏览器

抓取百度翻译的结果:

import requests
# UA伪装
header = {
    'user-agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
}

get = input('输入要翻译的英文:')
# post请求参数处理
url = 'https://fanyi.baidu.com/sug'
param = {
    'kw':get
#     向服务器发送的表单参数kw
}
# 5.获取响应数据:json()方法返回的是obj
# (如果确认响应数据是json类型的,才可以使用json())
response = requests.post(url = url, data=param,headers = header)
json = response.json()
print(json)

抓取豆瓣网电影信息:

import requests

url = "https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start=0&genres=%E5%96%9C%E5%89%A7"

header = {
    "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
}
param = {
    "sort": "U",
    "range": "0,10",
    "tags": "",
    "start": "0",
    "genres": "喜剧"
}
response = requests.get(url=url,params = param,headers=header)
json = response.json()
print(json)

三、数据解析

聚焦爬虫:爬取页面中指定的页面内容(相比于通用爬虫的流程增加了数据解析步骤)

数据解析分类: 正则 | bs4 | xpath(*通用)

数据解析原理:

        解析的局部的文本内容会在 标签之间 或 标签的属性中(如图片的url) 存储

        解析步骤:
            1. 进行指定标签的定位
            2. 提取存储的数据        

图片的抓取¶

content返回的是二进制形式的图片数据

text(字符串) content(二进制)json() (对象)

url = "https://img3.zhaogepu.com/img/182176/jianpu/20121116_20121110165052327.gif"
# 获取图片的二进制数据
img_data = requests.get(url=url).content
with open('./指纹简谱.jpg','wb') as fp:
    fp.write(img_data)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675014.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号