01:快速入门爬虫

news2024/11/23 12:39:41

1.引导

1.Robots协议

Robots协议(爬虫协议)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。该协议是国际互联网界通行的道德规范,虽然没有写入法律,但是每一个爬虫都应该遵守这项协议。

2.爬虫的流程

流程图

请添加图片描述

(1)获取网页

获取网页就是给一个网址发送请求,该网址会返回整个网页的数据

常用技术

获取网页的基础技术:requests、urllib和selenium

获取网页的进阶技术:多进程多线程抓取(8)、登录抓取、突破IP封禁和使用服务器抓取

(2)解析网页(提取数据)

解析网页就是从获取的整个网页的数据中提取想要的数据

常用技术

解析网页的基础技术:re正则表达式、BeautifulSoup和lxml

解析网页的进阶技术:解决中文乱码

(3)存储数据

存储数据也很容易理解,就是把数据存储下来。我们可以存储在csv中,也可以存储在数据库中

常用技术

存储数据的基础技术:存入txt文件和存入csv文件

存储数据的进阶技术:存入MySQL数据库和MongoDB数据库

2.环境安装

(1)Anaconda

(2)pycharm

3.入门级案例

[学习HTML的网站]http://www.w3school.com.cn/html/index.asp

Python 100试题l

爬虫学习测试网站

如此在浏览器上面查找我们想要的元素

第一步:打开浏览器,跳转到指定的网页,然后点击鼠标右键

请添加图片描述

点击小箭头后,会自动跳转到我们想要的内容上,并且显示标签

请添加图片描述

#*******************************************************#
# 导包:从bs4中导入BeautifulSoup
#*******************************************************#
import requests
from bs4 import BeautifulSoup
#*******************************************************#
#  link是我们想要获取的网页链接
#  这个链接可换成我们想要获取的网页链接
#*******************************************************#
link = "http://www.santostang.com/"
#*******************************************************#
#  headers是定义的浏览器的请求头,伪装成浏览器
#  一般是固定的,不要去改变它
#*******************************************************#
headers = {"User-Agent": "Mozilla/5.0 (WIindows; U; Windows NT 6.1;en-US; rv:1.9.1.6)Gecko/20100101 Firefox/3.5.6"}
#*******************************************************#
#####  第一步:请求网页
#*******************************************************#
r = requests.get(link, headers=headers)
print(f"获取网页的html网页内容如下:\n{r.text}")
#*******************************************************#
#####  第二步:解析网页
#   BeautifulSoup会将获取的html文档代码转换成soup对象
#   然后利用soup对象查找我们想要的指定元素
#*******************************************************#
soup = BeautifulSoup(r.text, 'html.parser')
#*******************************************************#
#    利用soup对象查找指定的元素
#    soup.find("h1", class_="post-title").a.text.strip()的意思是,找到第一篇文章标题
#    定位到class是"post-title"的h1元素,提取a元素,提取a元素里面的字符串,strip()去除左右空格
#*******************************************************#
title = soup.find("h1",class_="post-title").a.text.strip()
#*******************************************************#
# 输出一下自己提取的结果,看是否提取到
#*******************************************************#
print(title)
#*******************************************************#
#####  第三步:保存数据,为txt
#*******************************************************#
with open("results.txt", "a+") as f:
    f.write(title + "\n")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pytorch1.12.1+cu113安装记录

因为torch1.7.0对于SiLU算子导出不支持,需要1.7.1才支持.于是索性准备更新一下自己的算法版本库,查询到CUDA11.3支持的最高Pytorch版本为1.12.1,于是统一做一下更新.这里采用离线下载的方式,因为在线下载实在是太蛋疼了 1. Pytorch离线包下载 这是官方提供的版本,我这里不直接…

Python-web开发学习笔记(4):CSS基础

🚀 Python-web开发学习笔记系列往期文章: 🍃 Python-web开发学习笔记(1)--- HTML基础 🍃 Python-web开发学习笔记(2)--- HTML基础 🍃 Python-web开发学习笔记&#xff08…

面试常考算法(1):反转链表、局部反转链表(包含误区分析)

BM1 反转链表 给定一个单链表的头结点pHead(该头节点是有值的,,$ 长度为n,反转该链表后,返回新链表的表头。   数据范围: 0 ≤ n ≤ 1000 0 \leq n \leq 1000 0≤n≤1000   要求: 空间复杂度 O ( 1 ) O(1) O(1) &#xff0c…

QT QHorizontalSpacer弹簧控件

本文详细的介绍了QHorizontalSpacer控件的各种操作,例如:新建界面、控件布局、隐藏控件、设置宽高、添加布局、其它参数、.h源文件、cpp源文件、其它文章等等操作。 实际开发中,一个界面上可能包含十几个控件,手动调整它们的位置既…

最优化简明版(上)

引言 本文简单地介绍一些凸优化(Convex Optimization)的基础知识,可能不会有很多证明推导,目的是能快速应用到机器学习问题上。 凸集 直线与线段 设 x 1 ≠ x 2 x_1 \neq x_2 x1​x2​为 R n \Bbb R^n Rn空间中的两个点,那么具有下列形…

基于 log4j2 插件实现统一日志脱敏,性能远超正则替换

前言 金融用户敏感数据如何优雅地实现脱敏? 日志脱敏之后,无法根据信息快速定位怎么办? 经过了这两篇文章之后,我们对日志脱敏应该有了一定的理解。 但是实际项目中,我们遇到的情况往往更加复杂: 1&am…

开发云原生应用应遵循的十二要素

代码库:一份版本控制下的基准代码库,多份部署 应用程序的源代码仓库应该只包含一个应用程序,并列出它所依赖的资源清单。对于不同的环境,我们应该不需要重新编译或打包应用程序。每个环境中特有的设置应该与代码无关 依赖&#…

SpringMVC-【回顾】

回顾MVC架构 什么是mvc:模型、视图、控制器 -----软件设计规范 回顾servlet maven项目导入依赖(webmvc,servlet-api,jsp-api,jstl,junit)创建子模块,在子模块中添加框架支持(在子模块中导入依赖jsp、servlet【因为父…

【NACK】视频rtp包接收及nack触发流程走读

这里大神分析很很透彻了:原文地址:WebRTC中NACK的处理流程 - 资料 - 音视频开发中文网 - 构建全国最权威的音视频技术交流分享论坛视频包的接收 RtpVideoStreamReceiver::ReceivePacket void RtpVideoStreamReceiver::ReceivePacket(const RtpPacketReceived& packet)知乎…

聊聊哪些奇葩的代码规范 —— 代码放一行

因为有些要求感觉实是太过奇葩,收集下来娱乐下大家。 代码规范要求 要求代码必须要放在一行上面,导致代码上面有不少行甚至超过了 1000 个字符。 规范解读 就是有时候代码过长,我们会折行增加可读性,最简单的一个例子就是 obj…

CG平台实验——逻辑回归

文章目录 练习2:逻辑回归介绍1 Logistic回归1.1 数据可视化1.2 实现1.2.1 Sigmoid函数1.2.2 代价函数和梯度1.2.2.1 代价函数1.2.2.2 梯度下降 1.2.3 寻找最优参数1.2.4 评估逻辑回归 2 正则化逻辑回归2.1 数据可视化2.2 特征映射2.3 代价函数和梯度 2.4 寻找最优参…

rust疑难进阶手册(1)-安装和管理,类型推断,打印输出(1)

目录 安装管理和配置工具项目管理类型推断格式输出位置参数格式化文本命名参数安装 不管OS是否带有rust,都应使用rustup来安装rust linux/freebsdcurl https://sh.rustup.rs -sSf | shwindows https://www.rust-lang.org/tools/install windows下建议使用GNU的编译链接库,不…

GraphQL入门实战

解决什么问题 根据请求控制返回结果 例如: 一个User对象,有id,name,mobile,email 有些接口只要返回id,name ,有些接口还要要返回 mobile 适用场景 弱文档管理,公司对文档要求不高需求复杂变…

【JavaEE进阶】springBoot热部署、请求转发与重定向

目录 一、SpringBoot热部署 1.1热部署的步骤 1.1.1导入maven中央仓库的jar包 1.1.2开启项目自动编译 1.1.3启动项目 1.2热部署的原理 二、请求转发&重定向 2.1关键字不一样 2.2定义不同 请求转发(forward): 请求重定向(redirect): 2.3数据共享不一样…

如何用MASM32开发Windows应用程序

提醒:以下内容仅做参考,可自行发散。在发布作品前,请把不需要的内容删掉。IT技术日异月异,无论是初学者还是有经验的专业人士,都需要与时俱进,不断学习新技术。在学习一门新的IT技术时,都需要采…

Github自定义个人首页

前言 GitHub 个人主页,官方称呼是 profile,是一个以 Markdown 脚本语言编写的个人 GitHub 展示主页面。Guthub 个人主页可以展示很多有用的信息,例如添加一个首页被访问次数的计数器,一个 Github 被 Star 与 Commit 的概览信息&a…

JVM-学习笔记

一 . JVM架构图 JVM是Java Virtual Machine的简称,意为Java虚拟机。JVM有很多种,使用最为广泛的JVM为HotSpot。 如上面架构图所示,JVM分为三个主要子系统: 类加载器子系统(Class Loader Subsystem) 运行…

Linux命令学习之cp和mv

cp man 1 cp可以看一下cp的帮助说明。 cp -r /learnwell/good/ /tmp把good目录复制到/tmp目录下,注意想要复制目录,一定要加上-r选项。 接下来学习复制文件,cp 源文件 目标目录(相对路径方法)或者是cp /源文件所在目…

华为OD机试题【IPv4地址转换成整数】【2023 B卷 100分】

文章目录 🎯 前言🎯 题目描述🎯 解题思路示例 1示例 2📙 Python代码实现📗 Java代码实现📘 C语言代码实现 🎯 前言 🏆 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为…

Spark安装和编程实践(Spark2.4.0)

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装(单机、伪分布) Hadoop集群搭建 HBase2.2.2安装(单机、伪分布) Zookeeper集群搭建 HBase集群搭建 Spark安装和编程实践(Spark2.4.0) Spark集群搭建 文章目…