python网络爬虫(一)——网络爬虫基本原理

1.使用Beautiful Soup解析网页

  通过request库已经抓取到网页源码,接下来要从源码中找到并提取数据。Beautiful Soup是python的一个库,其主要功能是从网页中抓取数据。Beautiful Soup目前已经被移植到bs4库中,也就是说在导入Beautiful Soup时需要先安装bs4。
安装好bs4库后,还需要安装lxml库。如果我们不安装lxml库,就会使用python默认的解析器。尽管Beautiful Soup既支持python标准库中的HTML解析器,又支持一些第三方解析器,但是lxml库功能更强大,速度更快,因此笔者推荐安装lxml库。

pip3 install request
pip3 install bs4
pip3 install lxml

  Beautiful Soup库能够轻松解析网页信息,它被集成在bs4库中,需要时可以从bs4库中调用。首先,HTML文档将被转换成Unicode编码格式,然后Beautiful Soup选择最合适的解析器来解析这个文档,此处指定lxml库进行解析,解析后便将复杂的HTML文档转换成树形结构,并且每个节点都是python对象。

2.网络爬虫的基本原理

2.1网页请求

(1)Request
  每个展示在用户面前的网页都必须经过这一步,也就是向服务器发送访问请求;
(2)Response
  服务器在接收到用户的请求后,会验证请求的有效性,然后向用户(客户端)发送响应的内容;客户端接收服务器响应的内容,将内容展示出来,这就是我们所熟悉的网页请求。

2.2请求方式

(1)GET
  最常见的方式,一般用于获取或查询资源信息,参数设置在URL中,其也是大多数网站使用的方式,只需一次发送和返回,响应速度快

import requests
import json
url = 'https://blog.csdn.net/kk_lzvvkpj/article/details/138960980'
strhtml = requests.get(url)
print(strhtml.status_code)
print(strhtml.json())

  获取网页信息的代码如下:

import requests
from bs4 import BeautifulSoupurl = 'https://www.bilibili.com/video/BV1TC4y1N7dB/?spm_id_from=333.1007.0.0&vd_source=912d1bec97cad7dac820d2ba865f116a'
strhtml = requests.get(url)
print(strhtml.text)soup = BeautifulSoup(strhtml.text,'lxml')
data = soup.select('#main >div >div.mtop.firstMod.clearfix>div.centerBox>ul.newsList>li>a')
print(data)

  这里用select选择器定位数据,在定位数据时需要使用浏览器的开发者模式,将鼠标光标停留在对应的数据位置并右击,在弹出的快捷菜单中选择“检查”命令。

(2)POST
  相比GET方式,POST方式通过request body传递参数,可发送请求的信息远大于GET方式。
  Post请求数据的方式不同于GET,GET可以通过URL传递参数,而POST参数则需要放在请求实体里。接着使用request.post()方法请求表单数据,并将字符串格式的数据转换成JSON格式的数据,并根据数据结构提取数据

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

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

相关文章

HarmonOS实战开发:Node-API接口适配模块加载指导

Node-API中的napi_load_module_with_info接口的功能是进行模块的加载,当模块加载出来之后,可以使用函数napi_get_property获取模块导出的变量,也可以使用napi_get_named_property获取模块导出的函数,该函数可以在新创建的ArkTs基础…

力扣239题详解:滑动窗口最大值的多种解法与模拟面试问答

在本篇文章中,我们将详细解读力扣第239题“滑动窗口最大值”。通过学习本篇文章,读者将掌握如何在数组中找到每个滑动窗口的最大值,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。 问题描述 力…

SprinBoot+Vue学生选课微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…

C++使用日志库经验总结

1、log4cpp日志源文件路径设置 在 Visual Studio 中,C 项目的日志格式可以通过设置项目的属性来调整。如果你想要使用完整路径来显示诊断消息,可以在项目属性中的“C/C”选项卡下的“高级”属性页中找到“使用完整路径”(/FC)选项…

探索数字化生态平台的特色功能,开启未来新征程

在数字化浪潮席卷全球的今天,数字化生态平台正以惊人的速度崛起,成为推动经济发展与社会进步的强大引擎。那么,这些平台究竟有哪些独特的特色功能呢?让我们一同深入探索。 首先,我们要明确数字化生态平台的定义。它是利…

ParallelsDesktop19可在任何Mac上运行Windows软件

ParallelsDesktop19是一款Mac虚拟机软件,可在任何Mac上运行Windows,体验不同操作系统之间的无缝集成,并具有创新设计和增强功能,如无密码登录与TouchID、支持macOSSonoma14和增强打印选项。此外,它还支持运行更多Windo…

第二证券:大洗牌!头部券商营收、净利集体下滑

前十券商营收团体下滑,银河证券跌幅最小 新股IPO数量锐减129家至44家,国内证券市场股票基金交易量日均规划 同比下降 6.83%……关于证券公司而言,本年上半年可谓多重要素叠加冲击,成果下滑难以避免。于大多数证券公司而言&#x…

01、echart的基本使用

一 为什么使用echarts 丰富的可视化类型(柱状图、散点图、雷达图…) 多种数据格式无需转换直接使用 千万数据的前端展现移动端优化 多渲染方案,跨平台 动态数据 绚丽的特效 二echarts快速上手 方式一: 从gi thup中下载ech…

未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序

未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 或者 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序 Language: C# Database: Access 解决方案: Microsoft.ACE.OLEDB.12.0 官方下载地址 https://www.microsoft.com/en-us/download/details.…

强化学习与深度学习的结合

强化学习与深度学习的结合 目录 一、引言 二、强化学习基础 三、深度学习基础 四、强化学习与深度学习的结合实例 五、总结 一、引言 随着人工智能技术的不断发展,强化学习已经成为了计算机科学领域的一个重要分支。而深度学习作为一种强大的机器学习方…

redroid搭建云手机学习笔记(一)

参考链接 通过Redroid搭建自己的云手机 docker安装 docker官网目前打不开了,通过官网安装的方式无法实现,这里需要借助镜像网站来实现docker的安装 参考链接:https://developer.aliyun.com/mirror/docker-ce # step 1: 安装必要的一些系统…

如何克服编程学习中的挫折感的?

你是如何克服编程学习中的挫折感的? 在编程学习的道路上,遭遇挫折感几乎是每位学习者不可避免的经历。无论是初学者在基础语法上的反复磕碰,还是进阶者在复杂算法、系统设计前的迷茫与困惑,挫折感都是成长路上的一个重要伴侣。然…

BPE - Byte Pair Encoding

动机 对于LLM,对text进行tokenize最原始的想法是每个词对应一个编号。但一旦语言变多,token list映射表就会特别大,因此需要一种数据压缩方法去减少token list size 算法 计算相邻字符的组合出现频率,频率最高(假设…

Python使用zdppy_mysql操作MySQL和MariaDB数据库快速入门教程

zdppy_mysql 使用python操作MySQL 项目开源地址:https://github.com/zhangdapeng520/zdppy_mysql 安装 pip install zdppy_mysql使用教程 连接MySQL import zdppy_mysql from config import host, username, password, database, port# 连接数据库 db zdppy_…

强化学习实操入门随笔

碎碎念:经过思考,打通底层逻辑,我认为未来ai的功能是在沟通领域代替人,未来人-人模式(媒介是死的语言,比如看古人留下的文字、聊天的暂时不在)会变成人-ai替身-人模式(符合本人想法的…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.08.10-2024.08.15

文章目录~ 1.Towards Flexible Visual Relationship Segmentation2.When Video Coding Meets Multimodal Large Language Models: A Unified Paradigm for Video Coding3.Do Vision-Language Foundational models show Robust Visual Perception?4.IFShip: A Large…

selenium(一)基于java、元素定位

Selenium自动化 Selenium是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。 chrome下载 https://www.google.com/chrome/ 下载的结果是 “ChromeSetup.exe”,双击该文件,安装程序会自…

1、Java简介+DOS命令+java的编译运行(字节码/机器码、JRE/JVM/JDK/JIT的区别)+一个简单的Java程序

前言:本文属于黑马程序员和javaguide的混合笔记,仅作学习分享使用,建议感兴趣的小伙伴去看黑马原视频或javaguide原文。如有侵权,请联系删除。 Java类型: JavaSE 标准版:以前称为J2SE,主要用来…

网站开发:HTML+CSS - 表格与表单

1. 前言​​​​​​​​​​​​​​ 表格与表单在网页开发中非常重要。表格使得用户可以更简洁清晰的去浏览信息。 表单提供了一种在客户端(浏览器)和服务器之间进行数据交互的方式。 以下为其主要作用: 用户交互和数据输入:表…

Android Audio分区——音频分区加载流程(三)

前面文章介绍了车载多区音频基础,并且介绍了音频分区相关类及对应功能,这里我们就来看一下音频分区的解析过程。 一、音频分区加载 音频分区的加载是在 CarAudioService 的初始化函数 init() 流程中进行的。 1、CarAudioService.java 源码位置&#x…