百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Python:爬虫处理流程及网页解析(python 网站爬虫)

toyiye 2024-08-19 01:14 6 浏览 0 评论

爬虫处理流程:

  1. 将互联网上的网页获取到本地

  2. 对网页进行解析

    网页解析是从网页中分离出我们所需要的、有价值的信息,以及新的待爬取的URL。

    网页的解析的方法:

  • 正则表达式(采用模糊匹配的方式,找出我们所需要内容)

  • BeautifulSoup(是一个可以从HTML或XML文件中提取数据的第三方Python库), BeautifulSoup可以采用Python自带的html.parse作为它的解析器,也可以采用lxml作为解析器。

    lxml 是Python语言解析处得XML和HTML的库

  • XPath(XPath 是一门在 XML 文档中查找信息的语言,XPath 可用来在 XML 文档中对元素和属性进行遍历。)

  1. 对解析出来的数据进行处理。

一、使用BeautifulSoup

安装:

pip install beautifulsoup4

安装lxml:

pip install lxml
解析器使用方法优点缺点
Python标准库BeautifulSoup(markup, “html.parser”)Python的内置标准库,执行速度适中,文档容错能力强Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器BeautifulSoup(markup, “lxml”)速度快,文档容错能力强需要安装C语言库
  1. 首先必须要导入 bs4 库,创建BeautifulSoup对象

    from bs4 import BeautifulSoupsoup = BeautifulSoup(html,'lxml') #html为下载的网页,lxml为解析器
  2. 详细使用可以看Beautiful Soup 4.2.0 文档

    掌握以下三个方法基本够用:

  • find_all("tag") 搜索当前所有的tag标签的集合。

  • find("tag") 返回的是一个tag标签。(这个方法用得少)

  • select("") 可以按标签名查找,用得多的是按标签逐层查找筛选元素。

二、使用BeautifulSoup提取网页内容的一些技巧

1、find_all()方法中放单独的标签名,如a,会提取网页中所有的a标签,这里要确保是我们所需要的链接a,一般都不是,需要加上条件(就是标签的属性,加以限制筛选),如果这一级标签没有属性,最好往上一级找。

以糗事百科为例来说明,http://www.qiushibaike.com/text/,抓取原创笑话段子。

发现内容都在span标签中,如果写 find_all("span") 可以抓取到段子的内容,但是还包含了网页上其他span的内容。这时我们往上一级标签上看,<div class="content> 就是只包含了段子内容的标签。

取出来的link的内容就是div,我们取它的span中的内容就是我们需要段子的内容。

2、select() 方法,可以按标签逐层查找到我们所需要的内容,这点特点方便,就是定位,避免了单一的标签无法定位到我们所需要的内容元素。

注意,以上按路径 标签之间的空格 td div a,可以用>,但也要注意>与标签之间都有空格。推荐使用 > 的方式。

我们使用Chrome浏览器,右键copy - selector (鼠标要放在标签上)

注意得到的内容,是从#开始的,这是上面divid#表示的是id),如果按此去搜索标签内容,只能得到一条内容。

#qiushi_tag_118962045 > a > div > span

需要改一下,按照个标签顺序去匹配搜索内容。这里第一个div就是 有id数字的那个div

div > a > div > span

按这个路径去搜索时,发现还匹配到评论的内容,这就是定位的问题,需要改得更准确一些。

a.contentHerf > div > span

改为从a标签开始,并且加上它的class属性。a.contentHerf<a class="contentHerf"在select()方法中的写法。

两种方式抓取到糗百的段子。注意这里只抓取了一页的内容

学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入学习交流群

626062078,我们一起学Python!

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码