返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫利器二之Beautif
  • 336
分享到

Python爬虫利器二之Beautif

爬虫利器Python 2023-01-31 08:01:00 336人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Beautiful Soup,有了它我们可

上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Beautiful Soup,有了它我们可以很方便地提取出html或XML标签中的内容,实在是方便,这一节就让我们一起来感受一下Beautiful Soup的强大吧。

1. Beautiful Soup的简介

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

Beautiful Soup提供一些简单的、Python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
废话不多说,我们来试一下吧~

2. Beautiful Soup 安装

Beautiful Soup 3 目前已经停止开发,推荐在现在的项目中使用Beautiful Soup 4,不过它已经被移植到BS4了,也就是说导入时我们需要 import bs4 。所以这里我们用的版本是 Beautiful Soup 4.3.2 (简称BS4),另外据说 BS4 对 python3 的支持不够好,不过我用的是 Python2.7.7,如果有小伙伴用的是 Python3 版本,可以考虑下载 BS3 版本。

可以利用 pip 或者 easy_install 来安装,以下两种方法均可

easy_install beautifulsoup4
pip install beautifulsoup4

如果想安装最新的版本,请直接下载安装包来手动安装,也是十分方便的方法。在这里我安装的是 Beautiful Soup 4.3.2

下载完成之后解压

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

sudo python setup.py install

然后需要安装 lxml

easy_install lxml
pip install lxml

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

easy_install html5lib
pip install html5lib

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

3. 开启Beautiful Soup 之旅

在这里先分享官方文档链接,不过内容是有些多,也不够条理,在此本文章做一下整理方便大家参考。

4. 创建 Beautiful Soup 对象

首先必须要导入 bs4 库

from bs4 import BeautifulSoup

我们创建一个字符串,后面的例子我们便会用它来演示

html = """
<html><head><title>The DORMouse's story</title></head>
<body>
<p class="title" name="dromouse"><b>The Dormouse's story</b></p>
<p class="story">Once upon a time there were three little sisters; and their names were
<a href="Http://example.com/elsie" class="sister" id="link1"><!-- Elsie --></a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>
<p class="story">...</p>
"""

5. 小试牛刀 爬豆瓣的前250热门电影数据

在使用该脚本时,需要安装下面用到的库先,如这样:

easy_install requests
easy_install codecs
easy_install bs4
easy_install openpyxl

脚本文件

#!/usr/bin/env python
# encoding=utf-8
import requests,re
import codecs
from bs4 import BeautifulSoup
from openpyxl import Workbook
wb = Workbook()
dest_filename = '电影.xlsx'
ws1 = wb.active  
ws1.title = "电影top250"

DOWNLOAD_URL = 'http://movie.douban.com/top250/'

def download_page(url):
    """获取url地址页面内容"""
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
    }
    data = requests.get(url, headers=headers).content
    return data


def get_li(doc):
    soup = BeautifulSoup(doc, 'html.parser')
    ol = soup.find('ol', class_='grid_view')
    name = [] #名字
    star_con = [] #评价人数
    score = []  #评分
    info_list = []  #短评
    for i in ol.find_all('li'):
        detail = i.find('div', attrs={'class': 'hd'})
        movie_name = detail.find('span', attrs={'class': 'title'}).get_text() #电影名字
        level_star = i.find('span',attrs={'class':'rating_num'}).get_text() #评分
        star = i.find('div',attrs={'class':'star'})
        star_num = star.find(text=re.compile('评价'))  #评价

        info = i.find('span',attrs={'class':'inq'})  #短评
        if info:     #判断是否有短评
            info_list.append(info.get_text())
        else:
            info_list.append('无')
        score.append(level_star)
        

        name.append(movie_name)
        star_con.append(star_num)
    page = soup.find('span', attrs={'class': 'next'}).find('a') #获取下一页
    if page:
        return name,star_con,score,info_list,DOWNLOAD_URL + page['href']
    return name,star_con,score,info_list,None


def main():
    url = DOWNLOAD_URL
    name = []
    star_con=[]
    score = []
    info = []
    while url:
        doc = download_page(url)
        movie,star,level_num,info_list,url = get_li(doc)
        name = name + movie
        star_con = star_con + star
        score = score+level_num
        info = info+ info_list
    for (i,m,o,p) in zip(name,star_con,score,info):
        col_A = 'A%s'%(name.index(i)+1)
        col_B = 'B%s'%(name.index(i)+1)
        col_C = 'C%s'%(name.index(i)+1)
        col_D = 'D%s'%(name.index(i)+1)
        ws1[col_A]=i
        ws1[col_B] = m
        ws1[col_C] = o
        ws1[col_D] = p
    wb.save(filename=dest_filename)

if __name__ == '__main__':
    main()

6. pip和easy_install区别

pip和easy_install安装命令有什么区别?
请看该博文:Python 包管理工具解惑

参考博文:
Beautiful Soup用法
Python 爬虫-模拟登录知乎-爬取拉勾网职位信息
Python 包管理工具解惑

--结束END--

本文标题: Python爬虫利器二之Beautif

本文链接: https://lsjlt.com/news/193129.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python爬虫利器二之Beautif
    上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Beautiful Soup,有了它我们可...
    99+
    2023-01-31
    爬虫 利器 Python
  • Python爬虫笔记4-Beautif
    BeautifulSoup介绍 与lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要功能也是如何解析和提取HTML/XML数据。 几种解析工具的对比 工具 速度 难度 正则表达式 最快 困难 ...
    99+
    2023-01-31
    爬虫 笔记 Python
  • python爬虫(二)
    HTTP和HTTPS HTTP,全称超文本传送协议,是属于计算机网络中应用层的协议,而HTTPS是HTTP加上SSL,HTTP是明文传输,速度快,但安全系数很低,而HTTPS比HTTP安全很多,但缺点是传输速度比较慢。 一.HTTP之请求...
    99+
    2023-01-30
    爬虫 python
  • Python爬虫之爬取二手房信息
    前言 说到二手房信息,不知道你们心里最先跳出来的公司(网站)是什么,反正我心里第一个跳出来的是网站是 58 同城。哎呦,我这暴脾气,想到就赶紧去干。 但很显然,我失败了。说显然,而不...
    99+
    2024-04-02
  • Python 爬虫利器 Selenium
    前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息。 还记得前几节,我们在构造请求时会给请求加上浏览器 headers,目的就是为了让...
    99+
    2023-01-30
    爬虫 利器 Python
  • python: 爬虫利器requests
    requests并不是系统自带的模块,他是第三方库,需要安装才能使用 闲话少说,来,让我们上代码:简单的看一下效果: import requests requests = requests.session() headers = { ...
    99+
    2023-01-31
    爬虫 利器 python
  • Python爬虫第二天
    Python爬虫第二天   超时设置         有时候访问网页时长时间未响应,系统就会判断网页超时,无法打开网页。如果需要自己设置超时时间则:             通过urlopen()打开网页时使用timeout字段设置 i...
    99+
    2023-01-30
    爬虫 第二天 Python
  • Python爬虫之教你利用Scrapy爬取图片
    目录Scrapy下载图片项目介绍使用Scrapy下载图片项目创建项目预览创建爬虫文件项目组件介绍Scrapy爬虫流程介绍页面结构分析最终目录树项目运行爬取结果后记Scrapy下载图片...
    99+
    2024-04-02
  • python爬虫之利用Selenium+Requests爬取拉勾网
    目录一、前言二、分析url三、获取所有城市和页数四、生成params参数五、获取数据六、总结一、前言 利用selenium+requests访问页面爬取拉勾网招聘信息 二、分析url...
    99+
    2024-04-02
  • python 爬虫之BeautifulS
    import urllib2url = 'http://www.someserver.com/cgi-bin/register.cgi'values = {}values['name'] = 'Michael Foord'values['l...
    99+
    2023-01-31
    爬虫 python BeautifulS
  • 【Python】Python爬虫之Sel
    XPath 语法 XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。 XML 实例文档 我们将在下面的例子中使用这个 XML 文档。 <...
    99+
    2023-01-31
    爬虫 Python Sel
  • Python爬虫之爬取我爱我家二手房数据
    目录一、问题说明二、解决方法三、完整代码四、数据展示一、问题说明 首先,运行下述代码,复现问题: # -*-coding:utf-8-*- import re import r...
    99+
    2024-04-02
  • python 爬虫利器优美的Beauti
        近期在研究py的网络编程,编写爬虫也是顺利成章的,开始在纠结与用正则表达式来匹配,到后来发现了Beautifulsoup,用他可以非常完美的帮我完成了这些任务:       Beautiful Soup 是用Python写的一个HT...
    99+
    2023-01-31
    爬虫 利器 优美
  • Python爬虫入门案例之爬取二手房源数据
    本文重点 系统分析网页性质 结构化的数据解析 csv数据保存 环境介绍 python 3.8 pycharm 专业版 >>&...
    99+
    2024-04-02
  • Python之爬虫基础
    网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫...
    99+
    2023-08-31
    python 爬虫 开发语言
  • 08 Python爬虫之selenium
    ---恢复内容开始--- 一. 先介绍图片懒加载技术   当获取一个网站的图片数据时,只能爬取到图片的名称,并不能获得链接,而且也不能获得xpath表达式。这是应用了图片懒加载技术。   - 图片懒加载技术的概念:     -- 图片懒加...
    99+
    2023-01-31
    爬虫 Python selenium
  • python之网络爬虫
    一、演绎自已的北爱         踏上北漂的航班,开始演奏了我自已的北京爱情故事二、爬虫11、网络爬虫的思路首先:指定一个url,然后打开这个url地址,读其中的内容。其次:从读取的内容中过滤关键字;这一步是关键,可以通过查看源代码的方式...
    99+
    2023-01-31
    爬虫 网络 python
  • python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
    接着第一篇继续学习。 一、数据分类 正确数据:id、性别、活动时间三者都有 放在这个文件里file1 = 'ruisi\correct%s-%s.txt' % (startNum, endNum) 数据格式...
    99+
    2022-06-04
    爬虫 之多 线程
  • Python爬虫之如何爬取我爱我家二手房数据
    这篇文章给大家分享的是有关Python爬虫之如何爬取我爱我家二手房数据的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、问题说明首先,运行下述代码,复现问题:# -*-coding:utf-8-*-im...
    99+
    2023-06-15
  • Python 爬虫学习笔记之单线程爬虫
    介绍 本篇文章主要介绍如何爬取麦子学院的课程信息(本爬虫仍是单线程爬虫),在开始介绍之前,先来看看结果示意图 怎么样,是不是已经跃跃欲试了?首先让我们打开麦子学院的网址,然后找到麦子学院的全部课程信息,像...
    99+
    2022-06-04
    爬虫 单线程 学习笔记
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作