爬虫基础学习

什么是爬虫:

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

爬虫的价值:

  • 实际应用
  • 就业

爬虫究竟是合法还是违法的?

  • 在法律中是不被禁止
  • 具有违法风险
  • 善意爬虫 恶意爬虫

爬虫带来的风险可以体现在如下方面:

  • 爬虫干扰了被访问网站的正常运营
  • 爬虫抓取了收到法律保护的特定类型的数据或信息

如何在使用编写爬虫的过程中避免进入局子

  • 时常的优化自己的程序,避免干扰被访问网站的正常运行
  • 在使用,传播爬取到的数据时,审查抓取到的内容,如果发现了涉及到用户因此商业机密等敏感内容需要及时停止爬取或传播。

爬虫在使用场景中的分类

  • 通用爬虫:抓取系统重要组成部分。抓取的是一整张页面数据。
  • 聚焦爬虫:是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容
  • 增量式爬虫:检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据

爬虫的矛与盾

反爬机制
  • 门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。
反反爬策略:
  • 爬虫程序可以通过制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户网页数据。

robots.txt协议

  • 君子协议。规定了网站中哪些数据可以被爬虫爬取哪些数据不可以被爬取。

http协议

概念:就是服务器和客户端进行数据交互的一种形式。

常用请求头信息
  • 请求载体的身份标识:User-Agent
  • Connection:请求完毕后,是断开连接还是保持连接
常用响应头信息
  • Content-Type:服务器响应回客户端的数据类型

https协议:

安全的超文本传输协议

加密方式
  • 对称秘钥加密
  • 非对称秘钥加密
  • 证书秘钥加密

requests模块:

python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率极高。

作用:模拟浏览器发请求。
如何使用:(requests模块的编码流程)

步骤1:指定url

步骤2:发起请求

步骤3:获取响应数据

步骤4:持久化存储

环境安装:
pip install requests

实战编码1:

需求:爬取搜狗首页的页面数据

#需求:爬取搜狗首页页面数据
from http.client import responsesimport requests
if __name__ == "__main__":#指定urlurl = 'https://www.sogou.com/'#2.发起请求#get方法会返回一个响应对象responses = requests.get(url=url)#3.获取响应数据.txt返回的是字符串形式的响应数据page_text = responses.textprint(page_text)#4.持久化存储with open('./sogou.html','w',encoding = 'utf-8') as fp:fp.write(page_text)print('爬取数据结束!!!')

实战编码2:

需求:破解百度翻译

获取UA

#UA User-Agent(请求整体的身份标识)
#UA监测:门户网站的服务器会检测对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,表明该请求是一个正常的请求。但是,如果检测到请求的载体身份标识不是基于某一浏览器的,则表明该#请求为不正常的请求(爬虫),则服务器端很可能拒绝本次请求。
#UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器。
import requests
if __name__ == "__main__":#UA伪装:将对应的User-Agent封装在一个字典中headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'}url = 'https://fanyi.sogou.com/text'#处理url携带的参数:封装到字典中kw  = input('enter a word:')param = {'fr' : kw}#对指定的url发起请求,对应的url是携带参数的,并且请求过程中处理了参数response = requests.get(url=url,params = param ,headers = headers )page_text = response.textfileName = kw+'.html'with open(fileName,'w',encoding='utf-8') as fp:fp.write(page_text)print(fileName,'保存成功!!!')

实战编码3:

需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情参数

import requests
import json
if __name__ == "__main__":#1.指定urlurl = 'https://movie.douban.com/typerank'#2.进行UA伪装headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0'}#3.get请求参数处理word = input('输入类型')param = {'type_name':'word','type':'24','interval_id' :'100:90','action' :''}response = requests.get(url = url,params = param ,headers = headers)page_text = response.textfileName = word + '.html'with open(fileName, 'w', encoding='utf-8') as fp:fp.write(page_text)print(fileName, '保存成功!!!')

聚焦爬虫:

爬取页面中指定的页面内容。

编码流程:

  • 指定url
  • 发起请求
  • 获取响应数据
  • 数据解析
  • 持久化存储

数据解析分类:

  • 正则
  • bs4----python特有
  • xpath(***)
正则数据解析原理概述:

解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储

  • 1.进行指定标签的定位
  • 2.标签或者标签对应的属性中存储的数据值进行提取(解析)
import re #加载正则模块
import os #加载创建该模块,可以创建文件夹
bs4进行数据解析

数据解析的原理:

1.标签定位

2.提取标签、标签属性中存储的数据值

bs4数据解析的原理:

1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中

2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取

pip install bs4   #创建BeautifulSoup对象
pip install lxml  #解析器
xpath解析:

最常用且最便捷高效的一种解析方式。通用性。

xpath解析原理:

1.实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中

2.调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获

环境的安装:

pip install lxml

如何实例化一个etree对象:from lxml import etree

1.将本地的html文档中的源码数据加载到etree对象中:etree.parse(filePath)

2.可以将从互联网上获取的源码数据加载到该对象中etree.HTML(‘page_text’)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3312.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wireshark抓路由器上的包 抓包路由器数据

文字目录 抓包流程概述设置抓包配置选项 设置信道设置无线数据包加密信息设置MAC地址过滤器 抓取联网过程 抓包流程概述 使用Omnipeek软件分析网络数据包的流程大概可以分为以下几个步骤: 扫描路由器信息,确定抓包信道;设置连接路由器的…

第34天:Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数

#知识点 1、安全开发-原生PHP-PHP.INI安全 2、安全开发-原生PHP-全局文件&单函数 3、安全开发-原生PHP-流量检测&AI算法 一、通用-PHP.INI设置 参考: https://www.yisu.com/ask/28100386.html https://blog.csdn.net/u014265398/article/details/109700309 …

Python爬虫学习前传 —— Python从安装到学会一站式服务

早上好啊,大佬们。我们的python基础内容的这一篇终于写好了,啪唧啪唧啪唧…… 说实话,这一篇确实写了很久,一方面是在忙其他几个专栏的内容,再加上生活学业上的事儿,确实精力有限,另一方面&…

【Flink系列】6. Flink中的时间和窗口

6. Flink中的时间和窗口 在批处理统计中,我们可以等待一批数据都到齐后,统一处理。但是在实时处理统计中,我们是来一条就得处理一条,那么我们怎么统计最近一段时间内的数据呢?引入“窗口”。 所谓的“窗口”&#xff…

《汽车维修技师》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答: 问:《汽车维修技师》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《汽车维修技师》级别? 答:省级。主管单位:北方联合出版传媒(…

HTML中如何保留字符串的空白符和换行符号的效果

有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} , HTML中想要保留 \n的换行效果的有下面3种方法: 1、style 中 设置 white-space: pre-lin…

Git在码云上的使用指南:从安装到推送远程仓库

目录 目录 前言: 1、git的安装 1.1.Linux-centos环境下安装 1.2.Linux-ubuntu环境下安装 2.创建Git本地仓库 3.配置Git 4.认识⼯作区、暂存区、版本库 5.添加文件 5.1.git命令 5.2.commit命令 6.远程操作 6.1.新建远程仓库 6.2.克隆远程仓库&#xff…

群论学习笔记

什么是对称? 对称是一个保持对象结构不变的变换,对称是一个过程,而不是一个具体的事物,伽罗瓦的对称是对方程根的置换,而一个置换就是对一系列事物的重排方式,严格的说,它也并不是这个重排本身…

联通用户管理系统(一)

#联通用户管理系统(一) 1.新建项目 如果你是windows的话,界面应该是如下的: 2.创建app python manage.py startapp app01一般情况下:我们是在pycharm的终端中运行上述指令,但是pychrm中为我们提供了工具…

.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上)

系列文章目录 1、.Net Core微服务入门系列(一)——项目搭建 2、.Net Core微服务入门全纪录(二)——Consul-服务注册与发现(上) 3、.Net Core微服务入门全纪录(三)——Consul-服务注…

在 macOS 上,用命令行连接 MySQL(/usr/local/mysql/bin/mysql -u root -p)

根据你提供的文件内容,MySQL 的安装路径是 /usr/local/mysql。要直接使用 mysql 命令,你需要找到 mysql 可执行文件的路径。 在 macOS 上,mysql 客户端通常位于 MySQL 安装目录的 bin 子目录中。因此,完整的路径应该是&#xff1…

春秋杯-WEB

SSTI 可以看到主页那里有个登录测试之后为ssti {{4*4}} fenjing梭哈即可得到payload {{((g.pop.__globals__.__builtins__.__import__(os)).popen(cat flag)).read()}}file_copy 看到题目名字为file_copy, 当输入路径时会返回目标文件的大小, 通…

记录一次微信小程序使用云能力开发的过程

对于开发微信小程序云开发不知从何起的同学们,可以当作一次参考。虽说官方有文档,有模板示例,但是这些都是片段或者完整的结果展示。对于初学或者开发经验较少的同学们,可能不知先从那里入手进行第一步的开发。下面解析下构建微信…

doc、pdf转markdown

国外的一个网站可以: Convert A File Word, PDF, JPG Online 这个网站免费的,算是非常厚道了,但是大文件上传多了之后会扛不住 国内的一个网站也不错: TextIn-AI智能文档处理-图像处理技术-大模型加速器-在线免费体验 https://…

用 Python 自动化处理日常任务

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

el-timeline时间线(Plus)左边图标改为自定义图片

(目前图片有点小,还需要自己去调整下大概样式,比较懒,就放了个大概样子) 时间线左侧正常根据文档内容,是填写的icon,但通过icon属性还有另外一个类型,component,可以搭配…

SpringBoot:RestTemplate与IllegalArgumentException

问题描述 在SpringBoot应用中,有时会遇到使用RestTemplate调用第三方服务的场景。例如:在进行地名数据采集时,为了拿到地名对应的经纬度位置,通常会有地理编码的步骤,此时就可能涉及到调用第三方接口服务实现此需求。 …

PyTorch使用教程(6)一文讲清楚torch.nn和torch.nn.functional的区别

torch.nn 和 torch.nn.functional 在 PyTorch 中都是用于构建神经网络的重要组件,但它们在设计理念、使用方式和功能上存在一些显著的区别。以下是关于这两个模块的详细区别: 1. 继承方式与结构 torch.nn torch.nn 中的模块大多数是通过继承 torch.nn…

数字小偷:2025年全面防护指南

在今天的数字时代,金钱已不再局限于传统银行和实体店铺,而是转移到网上银行和电子商务平台上。而随着这一变化,网络犯罪也从现实世界的抢劫演变成了数字世界中的“数字扒窃”。这意味着,几乎每个商业实体,无论大小&…

RV1126+FFMPEG推流项目(6)视频码率及其码率控制方式

视频从采集到编码再到线程获取编码后的数据,已经全部说完。接下来继续来说应该比较重要的,和视频相关的。就是码率。 视频码率及其码率控制方式 一、什么是码率? 视频码率是指在单位时间内传输的视频数据量,通常以 kbps&#x…