当前位置: 首页 > news >正文

爬虫的三大库

大家好,我是爱吃饼干的小白鼠。大家安装完python的requests,beautifulsoup ,lxml三个库,之后,我们就来说说怎么使用吧。然后我教大家一个简单的爬虫程序。

requests库

requests库的作用就是请求网站获取网页数据的,让我们从最简单的实例说起,requests库的使用方法。

import requests

url='http://www.ceweekly.cn/2022/1017/397973.shtml'
headers={
    'user-agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
#发送请求
response=requests.get(url=url)
#输出
print(response)
print(response.text)

 程序实现结果如下,<response [200]>表示请求网页成功,若为404,400,则请求失败。

 上面的程序我们加入了请求头,这样可以更好的抓取数据。

请求头如下:

headers={
    'user-agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }

requests库有除了上述的get方法外,还有post方法等。post大多数是需要登录的,不管,get可以爬取大部分网站了。

requests库运行常见报错如下

ConnectionError:网路问题,拒绝连接

HTTPError:response返回了不成功的状态码

Timout:请求超时

TooManyRedirects:请求超过了设定的次数,一般来说,这样是为了反爬而设置的。

BeautifulSoup库

 BeautifulSoup库是一个非常流行的模块,它的作用是用来解析requests库请求的网页,并把网页源代码解析为soup文档,以便过滤数据。

import requests
from bs4 import BeautifulSoup
url='http://www.ceweekly.cn/2022/1017/397973.shtml'
headers={
    'user-agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
#发送请求
response=requests.get(url=url)
#输出
soup=BeautifulSoup(response.text,'html.parser')
print(soup.prettify())

下面是程序实现结果

 

 虽然看上去和我们第一个差不多,但是通过BeautifulSoup库解析得到的Soup文档是按照标准缩进格式的结构输出的,为后面的数据处理做准备。

BeautifulSoup库除了可以使用文中的html.parser解析器,还可以支持第三方的解析器,比如讲lxml,xml,html5lib解析器。

不管用哪种解析器解析后的soup文档,可以用find(),fing_all()方法定位我们需要的元素,本文篇幅有限,就不说他们的使用方法,我放一个例子吧。

soup.find_all('div',"item")##查找div标签,class="item"

soup.find_all('div',class="item")

soup.find_all('div',attrs={"class":"item"})#attrs参数定义一个字典参数来搜索包含特殊属性的tag

 还有一个selector()方法,这个就更简单了,

soup.selector(div.item>a>h1)#在浏览器开发者模式里右击选择copy,会有一个copy selector选项,即可得到

 Lxml库

 Lxml库比BeautifulSoup库解析速度更快,我这里放一个案例,就不过多解释。

import requests
import lxml
from lxml import etree

url='http://www.ceweekly.cn/2022/1017/397973.shtml'
headers={
    'user-agent':' Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
#发送请求
response=requests.get(url=url)
#输出
print(response)

今天就说到这里,我们下一期见。 

相关文章:

  • 基于Java+Springboot+Vue+elememt社区疫情防控系统设计和实现
  • 【Linux】yum 与 vim 的基本使用
  • SpringCloudAlibaba【六】微服务架构下的秒杀案例
  • 字节一面:TCP 三次握手,问的好细!
  • 一个功能齐全的,多用途管理后台模板
  • 【C语言】三子棋小游戏
  • Python自动化:Windows下不用任务管理器也可以轻松定时执行任务
  • 基于HTML美中华传统文化题材网页项目的设计与实现 (纯HTML+CSS制作中国茶文化网站)...
  • 网络请求+基于Node.js的WebSocket
  • 两例典型的C++软件异常排查实例分享
  • 第30讲:事务的基本概念以及如何实现事务
  • 【C++初阶】类和对象(二)
  • C++位图
  • 人生重开模拟器(Python实现)
  • 数据结构与算法----栈和队列(Stack Queue)
  • php的引用
  • #Java异常处理
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • angular学习第一篇-----环境搭建
  • create-react-app项目添加less配置
  •  D - 粉碎叛乱F - 其他起义
  • gcc介绍及安装
  • Gradle 5.0 正式版发布
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • Java IO学习笔记一
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python_网络编程
  • Terraform入门 - 3. 变更基础设施
  • tweak 支持第三方库
  • 编写符合Python风格的对象
  • 从setTimeout-setInterval看JS线程
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 给第三方使用接口的 URL 签名实现
  • 开源SQL-on-Hadoop系统一览
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • ​批处理文件中的errorlevel用法
  • ###项目技术发展史
  • (12)Hive调优——count distinct去重优化
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (31)对象的克隆
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Python第六天)文件处理
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (分布式缓存)Redis持久化
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (七)Knockout 创建自定义绑定
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • ***检测工具之RKHunter AIDE
  • . Flume面试题
  • ../depcomp: line 571: exec: g++: not found