python之Beautiful Soup库

1、简介简单来说,BeautifulSoup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

1、简介

  简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:

  Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

  Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。

  Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

2、环境安装

  Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时我们需要 from bs4 import BeautifulSoup  。所以这里我们用的版本是 Beautiful Soup 4.3.2 (简称BS4)。

  1、快速安装

1
pip install beautifulsoup4

  2、如果想安装最新的版本,请直接下载安装包来手动安装,也是十分方便的方法

    1、Beautiful Soup3.2.1

    https://pypi.python.org/pypi/BeautifulSoup/3.2.1

    2、Beautiful Soup4.3.2

      https://pypi.python.org/pypi/beautifulsoup4/

    下载完成之后解压

    运行下面的命令即可完成安装

     python setup.py install

  3、然后需要安装 lxml

   pip install lxml

   另一个可供选择的解析器是纯Python实现的 html5lib , html5lib的解析方式与浏览器相同,可以选择下列方法来安装html5lib:

   pip install html5lib

    Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐安装。

  python之Beautiful Soup库

3. 使用方法

  最佳方法参考官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

  

  以下内容测试css和xpath分别提取文本和属性的区别,方便后续查看

from scrapy.selector import Selector
from scrapy.http import HtmlResponse
from bs4 import BeautifulSoup as bs

body = '''<html>
         <head>
          <base href='http://example.com/' />
          <title id="txt">Example website</title>
         </head>
         <body>
          <div id='images'>
           <a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a>
           <a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a>
           <a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a>
           <a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a>
           <a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a>"div text"</div>
          <div>helloworld test</div>
         </body>
        </html>'''
soup = bs(body, "lxml")
print("css获取属性:",soup.select("div")[0].attrs["id"])
print("xpath获取属性:",Selector(text=body).xpath("//div/@id").extract()[0])

print("css获取文本:", soup.select("title[id='txt']")[0].string)
print("xpath获取文本:",Selector(text=body).xpath("//title[@id='txt']/text()").extract()[0])

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120060.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue JS 对象转数组[通俗易懂]

    vue JS 对象转数组[通俗易懂]option:{ head:{ title:”日期”, name:date, width:180 }, data:{ date:”2021-05-27″, name:”张三”, address:”上海市浦东新区XX路XX号” } }转数组:letoption=this.option;letArr=Object.keys(option).map(k

    2022年9月13日
    0
  • nginx 接口转发_nginx后端接口转发到内网

    nginx 接口转发_nginx后端接口转发到内网目前开发多数趋于前后端分离,后端开发人员有的时候懒得搭建前端环境,可是写后端又不便于联调,经常被这个困扰中,本文介绍如何用nginx转发。前提:有一套完整的环境,可以访问整个环境。环境地址,eghttp://wangzhi.com背景:开发人员不想搭建前端环境,可是又不便于联调。postman联调的话,参数拼接比较麻烦。步骤:1、本地项目启动,eg:localhost:80802、配置本地host127.0.0.1wangzhi.com说明:需要把环境地址,转到本地,

    2022年10月9日
    0
  • 小米bl未解锁变砖了如何刷机_如何正确刷机

    小米bl未解锁变砖了如何刷机_如何正确刷机1.一部可以解锁bl的手机选择一部合适可以解锁的手机,以小米为例(我有的),小米需要绑定账号在新手机15天。去小米官方申请(https://www.miui.com/unlock/index.html),登陆账号,下载解锁工具,在工具里面登录小米账号,数据线连接进入bl模式的手机.(解锁会清空手机数据).解锁后手机仍保修登录小米账号,下载解锁工具2.选择合适的twrp下载twrp后,电脑使用…

    2022年5月1日
    375
  • Linux 中shell 脚本if判断多个条件

    Linux 中shell 脚本if判断多个条件Linux中shell脚本if判断多个条件格式如下,在比较时,数字和字符串用不同的比较符号 1.如果a&gt;b且a&lt;c   if((a&gt;b))&amp;&amp;((a&lt;c))     或者   if[[$a&gt;$b]]&amp;&amp;[[$a&lt;$c]]    或者         if[$a-gt…

    2022年7月27日
    2
  • 数据库 分区表详解

    数据库 分区表详解如果你的数据库中某一个表中的数据满足以下几个条件,那么你就要考虑创建分区表了。1、数据库中某个表中的数据很多。很多是什么概念?一万条?两万条?还是十万条、一百万条?这个,我觉得是仁者见仁、智者见智的问题。当然数据表中的数据多到查询时明显感觉到数据很慢了,那么,你就可以考虑使用分区表了。如果非要我说一个数值的话,我认为是100万条。2、但是,数据多了并不是创建分区表的惟一条件,哪怕你有一千万条记录,但

    2022年6月6日
    35
  • c语言tinyxml使用方法,TinyXml使用方法[通俗易懂]

    c语言tinyxml使用方法,TinyXml使用方法[通俗易懂]本文用一个详细的例子说明了TiXml的使用方法。如写、查找、插入、替换、加载、遍历等常见操作。首先简单介绍一下TinyXml,要看详细的在网上搜搜了^_^:1、TinyXml源代码只有4个cpp文件和2个头文件。2、首先要理解TinyXml中的各个基本类型之间的关系,看看这个继承图大家就会很明白了!可以看到TinyXml中的注释comment,声明declaration,元素element,文本等…

    2022年5月6日
    61

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号