Python爬虫快速上手,知识介绍与实战demo

news2024/11/28 17:51:23

目录

前言

一、爬虫是什么?

二、爬虫的基本流程:

三、http协议 请求与响应

四、 request

五、 响应Response

六、总结

七、简单实战demo


前言

        简单来说互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的网页呈现我们眼前;

一、爬虫是什么?

动浏览互联网并从网页中提取信息。爬虫广泛用于各种网络服务中,如搜索引擎的网页索引构建、数据采集、自动化测试等。

简单来说,爬虫的工作流程包括以下几个步骤:

  1. 开始于一个或多个初始网页URL:爬虫首先需要一组起始点,即网页的URL。
  2. 获取网页内容:爬虫通过HTTP或其他协议访问这些URL,并下载网页内容。
  3. 提取链接:解析这些网页内容,提取出新的URL链接,将它们添加到爬取队列中。
  4. 解析内容:除了提取链接,爬虫还会解析网页内容,提取有用的信息,如文本、图片等。
  5. 数据存储:将提取的信息保存到数据库、文件或其他存储系统中,以供进一步的处理或分析。
  6. 遵守规则:遵循robots.txt的规定,尊重网站的爬取规则,并适当控制访问频率,以免给网站带来负担。

爬虫技术的关键挑战之一是网页的多样性和复杂性,这要求爬虫能够处理不同格式的网页,并从中准确地提取信息。此外,面对反爬虫技术,开发者需要设计更智能的爬虫,以模拟正常用户行为,绕过限制。

二、爬虫的基本流程:

用户获取网络数据的方式:

方式1:浏览器提交请求--->下载网页代码--->解析成页面

方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中

爬虫要做的就是方式2;

1、发起请求

使用http库向目标站点发起请求,即发送一个Request

Request包含:请求头、请求体等 

Request模块缺陷:不能执行JS 和CSS 代码

2、获取响应内容

如果服务器能正常响应,则会得到一个Response

Response包含:html,json,图片,视频等

3、解析内容

解析html数据:正则表达式(RE模块),第三方解析库如Beautifulsoup,pyquery等

解析json数据:json模块

解析二进制数据:以wb的方式写入文件

4、保存数据

数据库(MySQL,Mongdb、Redis)文件

三、http协议 请求与响应

Request:用户将自己的信息通过浏览器(socket client)发送给服务器(socket server)

Response:服务器接收请求,分析用户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图片,js,css等)

ps:浏览器在接收Response后,会解析其内容来显示给用户,而爬虫程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有用数据。

四、 request

1、请求方式:

常见的请求方式:GET / POST

2、请求的URL

url全球统一资源定位符,用来定义互联网上一个唯一的资源 例如:一张图片、一个文件、一段视频都可以用url唯一确定

url编码

https://www.baidu.com/s?wd=图片

图片会被编码

网页的加载过程是:

加载一个网页,通常都是先加载document文档,

在解析document文档的时候,遇到链接,则针对超链接发起下载图片的请求

3、请求头

User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做一个非法用户host;

cookies:cookie用来保存登录信息

注意: 一般做爬虫都会加上请求头

请求头需要注意的参数:

(1)Referrer:访问源至哪里来(一些大型网站,会通过Referrer 做防盗链策略;所有爬虫也要注意模拟)

(2)User-Agent:访问的浏览器(要加上否则会被当成爬虫程序)

(3)cookie:请求头注意携带

4、请求体

请求体
    如果是get方式,请求体没有内容 (get请求的请求体放在 url后面参数中,直接能看到)
    如果是post方式,请求体是format data

    ps:
    1、登录窗口,文件上传等,信息都会被附加到请求体内
    2、登录,输入错误的用户名密码,然后提交,就可以看到post,正确登录后页面通常会跳转,无法捕捉到post

五、 响应Response

1、响应状态码

  200:代表成功

  301:代表跳转

  404:文件不存在

  403:无权限访问

  502:服务器错误

2、respone header
响应头需要注意的参数:

(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来

(2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另一个页面

3、preview就是网页源代码

JSO数据

如网页html,图片

二进制数据等 

六、总结

1、总结爬虫流程:

 爬取--->解析--->存储

2、爬虫所需工具:

 请求库:requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有用没用的网页都会加载);)
 解析库:正则,beautifulsoup,pyquery
 存储库:文件,MySQL,Mongodb,Redis

七、简单实战demo

1. 环境准备

确保Python环境已安装,并通过以下命令安装必要的库:

pip install requests beautifulsoup4 lxml

这里lxml是一个非常快的解析库,被推荐用作BeautifulSoup的解析器。

2. 发送HTTP请求

使用requests库向目标网站发送请求。我们将使用.get()方法,它是最常见的HTTP请求方法,用于请求数据从指定资源。

import requests

# 目标网站URL
url = 'https://example.com'

# 发送GET请求
response = requests.get(url)

# 确保请求成功
if response.status_code == 200:
    print("请求成功!")
else:
    print("请求失败:", response.status_code)
3. 解析HTML页面

得到网页内容后,利用BeautifulSoup解析HTML。首先,初始化BeautifulSoup对象,然后使用它提供的方法来提取你感兴趣的数据。

from bs4 import BeautifulSoup

# 解析网页内容
soup = BeautifulSoup(response.content, 'lxml')

# 提取网页标题
title = soup.title.text
print("网页标题:", title)
4. 数据提取

根据HTML元素的类名、id或其他属性来提取信息。例如,提取所有段落文本或链接。

# 提取所有段落文本
paragraphs = soup.find_all('p')
for p in paragraphs:
    print(p.text)

# 提取所有链接
links = soup.find_all('a')
for link in links:
    print(link.get('href'))
5. 复杂案例:爬取CSDN博客文章

让我们通过一个具体的例子来展示如何爬取CSDN博客的文章标题和内容。

# 目标CSDN博客文章URL
url = 'https://blog.csdn.net/your_article'

response = requests.get(url)
if response.status_code == 200:
    soup = BeautifulSoup(response.content, 'lxml')

    # 假设文章标题在一个特定的HTML元素中
    title = soup.find('h1', class_='article-title').text.strip()
    print("文章标题:", title)

    # 假设文章内容在特定的HTML元素中
    content = soup.find('div', class_='article-content').text.strip()
    print("文章内容:", content[:100])  # 打印文章内容的前100个字符作为预览
else:
    print("请求失败:", response.status_code)

请注意,上述代码中的类名article-titlearticle-content是假设的。实际中你需要检查CSDN博客的HTML结构,并使用合适的选择器。

6. 注意事项
  • 遵守robots.txt规则:在进行网站数据抓取前,应先查看其robots.txt文件,了解哪些内容是允许爬取的。
  • 设置请求头:模拟浏览器的请求,设置User-Agent来避免被网站拦截。
  • 异常处理:在请求和解析过程中,添加异常处理逻辑,确保程序的健壯性。
  • 节制爬取频率:设置合理的请求间隔,尊重网站资源,避免对网站造成不必要的负担。

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

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

相关文章

混合现实(MR)开发工具

混合现实(MR)开发工具是一系列软件和框架,它们使得开发者能够创建和优化能够在虚拟与现实世界之间无缝交互的应用程序。以下是一些在MR领域内广泛使用的开发工具。 1.Microsoft Mixed Reality Toolkit (MRTK) MRTK是一个跨平台的工具包&…

Yarn与Zookeeper的介绍

Yarn--三大调度策略 FIFO(先进先出): 目前几乎已经没有人使用了. 类似于: 单行道. 好处: 每个计算任务能独享集群100%的资源. 弊端: 不能并行执行, 如果大任务过多, 会导致小任务执行时间过长. Capacity(容量调度): 我们用…

idea Springboot 电影推荐系统LayUI框架开发协同过滤算法web结构java编程计算机网页

一、源码特点 springboot 电影推荐系统是一套完善的完整信息系统,结合mvc框架和LayUI框架完成本系统springboot dao bean 采用协同过滤算法进行推荐 ,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发)&…

亮数据,可视化数据采集强大利器

前言 随着信息技术的飞速发展,我们已经进入了一个以数据为中心的世纪。在这个时代,数据不仅仅是信息的载体,它已经成为了推动社会进步、创新科技、增强决策和驱动经济增长的关键资源。 在这个数据世纪中,掌握数据的能力等同于掌…

计算机网络—VLAN 间路由配置

目录 1.拓扑图 2.实验环境准备 3.为 R3 配置 IP 地址 4.创建 VLAN 5.配置 R2 上的子接口实现 VLAN 间路由 6.配置文件 1.拓扑图 2.实验环境准备 配置R1、R3和S1的设备名称,并按照拓扑图配置R1的G0/0/1接口的IP地址。 [Huawei]sysname R1 [R1]interface Giga…

希亦、洁盟、大宇超声波清洗机好用吗?比拼谁是性价比之王

在追求高效生活品质的今天,超声波清洗机以其独特的清洁技术和便捷的操作方式,成为了家用和商用清洁领域的新宠。尤其对于眼镜用户而言,一台高效的超声波清洗机不仅能够轻松去除镜片上的污渍和细菌,更能保护镜片不受损伤&#xff0…

提升Web开发安全性:分析JScrambler、JShaman等五款在线JavaScript加密混淆工具

摘要 本篇技术博客将介绍五款常用且好用的在线JavaScript加密混淆工具,包括 jscrambler、JShaman、jsfack、freejsobfuscator 和 jjencode。通过对这些工具的功能及使用方法进行详细解析,帮助开发人员更好地保护和加密其 JavaScript 代码,提…

学浪视频如何下载或者录屏

很多同学购买了学浪视频,可是不知道如何下载下来,用录屏,发现学浪PC学生版客户端有防止录屏,为了解决这个问题,我开发了学浪视频下载的客户端 大家有需要自己取一下,截止到4月1号,最新版本是2.…

《自动机理论、语言和计算导论》阅读笔记:p115-p138

《自动机理论、语言和计算导论》学习第 6 天,p115-p138 总结,总计 24 页。 一、技术总结 1.associativity and comutativity (1)commutativity(交换性): Commutativity is the property of an operator that says we can switch the order of its ope…

【TB作品】MSP430G2553,超声波倒车雷达PCB,单片机,超声波SR04,键盘,oled

题目 硬件:MSP430G2553、 SR04超声波传感器 、3*4键盘、 无源蜂鸣器、oled显示屏 软件 1 、实时显示测量得到的距离 2、按键设置一个报警门限数值,直接输入数值后确认 3、低于报警门限数值就开始报警,而且距离越近蜂鸣器的鸣叫频率越高 程序…

ctf题目

目录 1.文件包含的一道题目,没什么难度, 2.一道sql注入的题目,伪静态 3.限制只能本地访问。 1.文件包含的一道题目,没什么难度, 但是一个点就是它这里去包含的那个文件名就是flag,而不是flag.php也不是f…

基于BEV的自动驾驶会颠覆现有的自动驾驶架构吗

基于BEV的自动驾驶会颠覆现有的自动驾驶架构吗 引言 很多人都有这样的疑问–基于BEV(Birds Eye View)的自动驾驶方案是什么?这个问题,目前学术界还没有统一的定义,但从我的开发经验上,尝试做一个解释:以鸟瞰视角为基础…

BIONIOAIO

通信技术整体解决的问题 1.局域网内的通信要求 2.多系统间的底层消息传递机制 3.高并发下,大数据量的通信场景需要 4.游戏行业。无论是手游服务端、还是大型网络游戏,java的应用越来越广 IO模型基本说明 就是用什么样的通道或者说是通信模式和架构…

Netty学习——源码篇9 Handler其他处理与异步处理

1 ChannelHandlerContext 每个ChannelHandler被添加到ChannelPipeline后,都会创建一个ChannelHandlerContext,并与ChannelHandler关联绑定。ChannelHandlerContext允许ChannelHandler与其他的ChannelHandler进行交互。ChannelHandlerContext不会改变添加…

14-项目管理:如何编写高质量的Makefile?

下面给你举个例子,你就会理解低质量的Makefile文件是什么样的了。 build: clean vetmkdir -p ./Roleexport GOOSlinux && go build -v .vet:go vet ./...fmt:go fmt ./...clean:rm -rf dashboard上面这个Makefile存在不少问题。例如:功能简单&a…

基于springboot实现企业客户管理系统项目【项目源码+论文说明】

基于springboot实现企业客户管理系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企…

信息化项目数据质量管理

数据质量管理定义: 对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、监控、预警、处理等一系列管理活动,并通过改善和提高管理水平使得数据质量获 得进一步提高。 2术语和定义 2…

绝地求生:300万在线已是过去的荣耀和成功,未来之路莫让反作弊绊脚!

PUBG七周年庆典活动已过去两周时间,相比较而言,活动还是比较给力的,大量的黑货票券、G-Coin让很多白嫖党玩家白嫖到了成长型武器、2024生存通行证等高质量皮肤道具,回流和新手玩家大量涌入,游戏热度一度回到Steam前二&…

CCIE-11-IPSec_VPN

目录 实验条件网络拓朴实验目的 开始配置1. R2 Ping R3确定基础网络是通的2. 配置R23. 配置R34. 测试 实验条件 网络拓朴 实验目的 为PC1和PC2建立IPSec VPN PC1可以ping通PC2 开始配置 1. R2 Ping R3确定基础网络是通的 R2#show ip int br Interface IP…

【题解】—— LeetCode一周小结13

【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结12 25.零钱兑换 II 题目链接:518. 零钱兑换 II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合…