【爬虫】python爬虫爬取网站页面(基础讲解)

news2025/2/24 11:07:11

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


爬虫(框架)爬取网站页面


目录

  • 爬虫(框架)爬取网站页面
  • 爬虫(框架)爬取网站页面
      • 1. 导入必要的库
      • 2. 获取网页内容
      • 3. 使用BeautifulSoup解析HTML
      • 4. 数据提取
      • 5. 异常处理
      • 6. 避免被封禁
      • 完整代码示例:
  • 注意事项
  • <center>本期好书推荐《Python网络爬虫入门实战》
    • <center>购买链接
      • <center>京东:https://item.jd.com/14049708.html


爬虫(框架)爬取网站页面

1. 导入必要的库

import requests
from bs4 import BeautifulSoup
  • requests库用于发送HTTP请求以获取网页内容。
  • BeautifulSoup库用于解析HTML内容并提取我们需要的信息。

2. 获取网页内容

我们首先要使用requests库获取页面的HTML内容。

url = 'https://example.com/articles'
response = requests.get(url)
html_content = response.content

3. 使用BeautifulSoup解析HTML

将获取到的HTML内容传递给BeautifulSoup,这样我们就可以用它来解析页面了。

soup = BeautifulSoup(html_content, 'html.parser')

4. 数据提取

这完全取决于你想从页面中提取哪些信息。假设我们要提取所有文章标题和链接:

articles = soup.find_all('div', class_='article')  # 假设每篇文章都包含在一个class为'article'的div标签内

for article in articles:
    title = article.find('h2').text
    link = article.find('a')['href']
    print(title, link)

5. 异常处理

在爬取网站时可能会遇到各种问题,如网络问题、页面不存在等。我们需要添加一些异常处理来确保爬虫的稳定性。

try:
    response = requests.get(url, timeout=10)
    response.raise_for_status()  # 如果响应状态不是200,则引发异常
except requests.RequestException as e:
    print(f"Error fetching the url: {url}. Reason: {e}")

6. 避免被封禁

当连续并频繁请求某个网站时,可能会被封禁。你可以使用以下策略避免这种情况:

  1. 设置User-Agent:伪装成真正的浏览器。
  2. 设置延迟:在连续的请求之间设置延迟,例如使用time.sleep(5)延迟5秒。
  3. 使用代理:使用不同的IP地址来发送请求。

完整代码示例:

import requests
from bs4 import BeautifulSoup
import time

url = 'https://example.com/articles'  # 换成你的网站

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}

try:
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status()
    soup = BeautifulSoup(response.content, 'html.parser')

    articles = soup.find_all('div', class_='article')

    for article in articles:
        title = article.find('h2').text
        link = article.find('a')['href']
        print(title, link)
        time.sleep(5)  # 每抓取一个页面后,暂停5秒

except requests.RequestException as e:
    print(f"Error fetching the url: {url}. Reason: {e}")

注意事项

注意:在运行爬虫之前,你应该:

  1. 检查目标网站的robots.txt文件,了解哪些页面允许爬取。
  2. 不要频繁地请求网站,这可能会被视为DDoS攻击。
  3. 确保你有权爬取和使用目标数据。
  4. 考虑网站的负载,不要对网站造成不必要的压力。
  5. 有时候,使用API是获取数据的更好方法,许多网站提供API来获取数据,而不是直接爬取。

本期好书推荐《Python网络爬虫入门实战》

购买链接

京东:https://item.jd.com/14049708.html

请添加图片描述

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

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

相关文章

亚马逊频繁扫号下的跨境电商,跨境电商卖家应该何去何从?

相信各位同行都知道&#xff0c;自2021年起&#xff0c;亚马逊的扫号活动就从未间断&#xff0c;直到如今2023年的亚马逊&#xff0c;仍然是隔2周-几个月就有大规模的审核扫号&#xff0c;大批卖家店铺被封&#xff0c;亚马逊卖家人人自危&#xff0c;面对时间间隔短频率高的扫…

富文本文案存储翻译方案

一般富文本的功能会有些样式&#xff0c;存储到数据库表里面之后会带上一大堆的标签和样式&#xff0c;底层如果要对这些进行翻译的话会变得非常困难&#xff0c;因为我们要翻译的只是里面的中文内容&#xff0c;这就面临第一个问题&#xff0c;把中文取出来&#xff0c;如果把…

(echarts)饼图封装相关总结及使用

(echarts)饼图封装相关总结 一、封装组件pieCharts.vue <template><div :id"id" :class"className" :style"{ height: height, width: width }" /> </template><script> import echarts from echarts import resize fr…

STM32Cube高效开发教程<基础篇>(三)----STM32CubeMX创建工程

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。    本专栏博客参考《STM32Cube高效开发教程(基础篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。 一、新建项目 …

亚马逊频繁封号,跨境电商卖家如何应对?

相信各位同行都知道&#xff0c;自2021年起&#xff0c;亚马逊的扫号活动就从未间断&#xff0c;直到如今2023年的亚马逊&#xff0c;仍然是隔2周-几个月就有大规模的审核扫号&#xff0c;大批卖家店铺被封&#xff0c;亚马逊卖家人人自危&#xff0c;面对时间间隔短频率高的扫…

WordPress插件 WP-PostViews 汉化语言包

WP-PostViews汉化语言包 WP-PostViews是一款很受欢迎的文章浏览次数统计插件&#xff0c;记录每篇文章展示次数、根据展示次数显示历史最热或最衰的文章排行、展示范围可以是全部文章和页面&#xff0c;也可以是某些目录下的文章和页面。本文还介绍了一些隐藏的功能&#xff0…

【完美世界】石昊偷渡出境四人组产生分歧,云曦和石昊牵手,二人世界要开始了

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析完美世界。 转眼又到完美世界动漫更新日&#xff0c;现在第132集已经更新了了。而这一集看下来&#xff0c;很明显完美世界又进步了&#xff0c;不但剧情紧凑&#xff0c;高潮点也要来了。而这一集看下来信息量也很多&…

k8s 1.28版本二进制安装

本文目录 二进制安装Kubernetes&#xff08;k8s&#xff09;v1.28.0介绍1.环境1.0.环境准备1.Linux网卡没有eth0显示ens33或者其它&#xff08;以ens33为例&#xff09;方法一&#xff1a;修改网卡配置方法二&#xff1a;重新安装机器(本文为虚拟机) 2.克隆的虚拟机&#xff0c…

UE5 Texture2D数组资产BUG!!!

Texture2D数组资产中的元素资产更新后&#xff0c;并未被更新&#xff0c;读取的仍然是之前缓存的Texture2D&#xff0c;需要手动清除后再手动设置新的Texture2D&#xff0c;才能生效&#xff01;&#xff01;&#xff01; 说明&#xff1a;Texture2D数组资产中的后期参数高于…

vmware vsphere用户权限分级

组或用户创建 在“系统管理→Single Sign On→用户和组”中“用户”选项卡中的“域”下拉列表中选择vSphere.local&#xff0c;单击“添加用户”。 权限分配 “系统管理→访问控制→角色”中查看或分配权限。 分类 1、管理员&#xff1a;具有完全的权限&#xff1b; 2、只…

当多条折线数据渲染在一个echarts里,这些折线的x轴数据是不统一的,处理方法

文档中series可以写成[[x轴值&#xff0c;y轴值],[x轴值&#xff0c;y轴值],[x轴值&#xff0c;y轴值]] 这种形式&#xff0c; 如果写成这样那么x轴会以series数组第一个子数组的x轴值的范围来定义&#xff0c;所以大家可以在给series赋值之前排个序&#xff0c;将子数组最多的…

【特纳斯电子】基于STM32的商用厨房监控系统-实物设计

视频及资料链接&#xff1a;基于STM32的商用厨房监控系统-实物设计 - 电子校园网 (mcude.com) 编号&#xff1a; T0052203M-SW 设计简介&#xff1a; 本设计是基于STM32的商用厨房监控系统&#xff0c;主要实现以下功能&#xff1a; 1.通过OLED显示温度、烟雾浓度、燃气浓…

2023年中国云存储优势、产值及市场规模分析[图]

云存储是基于云计算建立起来的一个网络存储技术即与计算的存储部分&#xff0c;将网络中的不同设备通过应用程序连接起来&#xff0c;进行协同工作&#xff0c;对外提供数据存储和业务访问。 云存储优势 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#xff09; 云存…

Kafka SASL认证授权(四)认证源码解析

Kafka SASL认证授权(四)认证源码解析。 官网地址:https://kafka.apache.org/ 一、认证流程 在了解kafka网络模型的基础上,了解它的认证流程: ApiVersionsRequest->SaslHandshakeRequest->a series of SASL client and server tokens corresponding to the mechani…

vue自定义指令directives

官网:https://cn.vuejs.org/v2/guide/custom-directive.html v-if等是内置的指令, 在这里研究自定义指令 局部自定义指令 在directives中定义,在一个组件中定义的,只能在这一个组件中使用 ; 定义命令: directives:{//自定义指令color,el是这个标签,binding是传入的值color:f…

SyntaxError: invalid character ‘:‘ (U+FF1A)问题解决

问题&#xff1a; SyntaxError: invalid character &#xff1a; (UFF1A) 原因及解决方法&#xff1a; 冒号输入的格式不对&#xff0c;冒号的输入为中文&#xff0c;改成英文即可。

[C++随想录] 模版进阶

模版进阶 模版中 class 与 typename非类型模版参数模版的分离编译模版的特化函数模版的特化类模板的特化1. 全特化2.偏特化 模版中 class 与 typename 一般情况下, 我们定义一个模版, 模版中的 class/ typename 的意义是一样的. 但是, 有一种情况除外&#x1f447;&#x1f44…

【Linux】 ps命令使用

作为一个后端的程序员&#xff0c;我们经常用到ps -ef | grep XXX 到底什么事ps呢。 下面我们一起学习一下吧、 ps &#xff08;英文全拼&#xff1a;process status&#xff09;命令用于显示当前进程的状态&#xff0c;类似于 windows 的任务管理器。 ps命令 -Linux手册页 …

云原生SIEM解决方案

云原生&#xff08;Cloud Native&#xff09;是一种基于云计算的软件开发和部署方法论&#xff0c;它强调将应用程序和服务设计为云环境下的原生应用&#xff0c;以实现高可用性、可扩展性和灵活性。 云原生的优势有哪些 高可用性&#xff1a;云原生可以实现应用程序的高可用…

易点易动RFID固定资产管理系统:实现固定资产快速准确盘点的利器

在现代企业管理中&#xff0c;固定资产的盘点是一项重要而繁琐的任务。传统的盘点方法往往耗时耗力&#xff0c;容易出现错误和遗漏&#xff0c;给企业带来不必要的麻烦和损失。为了解决这些问题&#xff0c;我们推出了易点易动RFID固定资产管理系统&#xff0c;它利用射频识别…