文档章节

Python网络爬虫——bs4基本用法

o
 osc_isezqdgg
发布于 2019/09/18 15:03
字数 764
阅读 9
收藏 0

精选30+云产品,助力企业轻松上云!>>>

使用流程:

  -导包:from bs4 import BeautifulSoup

  - 使用方式:可以将一个html文档,转化为BeautifulSoup对象,然后通过对象的方法或属性去查找指定的节点内容。

    (1)转化本地文件:

      - soup = BeautifulSoup(open(‘本地文件’),‘lxml’)

    (2)转化网络文件(与requests配合):

      - page_text = requests.get(url=url,headers=headers).text

      - soup = BeautifulSoup(page_text,'lxml')

    (3)打印soup对象显示内容为html文件中的内容

基础语法:

   (1)根据标签名查找

    - soup.a  只能找到第一个符合要求的标签

  (2)获取属性

    - soup.a.atters  获取a所有的属性和属性值,返回一个字典

    - soup.a.atters['href']  获取href属性

    - soup.a['href']  上面的简写

  (3)***获取内容

    - soup.a.string  获取<a></a>之间的文本内容(a不含子标签)

      - soup.a['href'].string  获取a标签中href的内容

    - soup.a.text   获取<a></a>之间包括子标签的所有文本内容

    - soup.a.get_text()  同上面用法

    【注意】如果标签里还有标签,那么string获取到的结果为None,其他两个可以获取文本内容

  (4)***find:找到第一个符合要求的标签

    - soup.find('a')  找到第一个符合要求的标签(a标签)

    - soup.find('a',title='xxx')   找到第一个title=‘xxx’的a标签

    - soup.find('a',alt='xxx')  同上

    - soup.find('a',class_='xxx')  同上,【注意】class后的_

    - soup.find('a',id='xxx')  同上

  (5)***find_all:找到所有符合要求的标签

    - soup.find_all('a')  找到所有a标签

    - soup.find(['a','b'])  找到所有a和b标签

    - soup.find_all('a',limit=2)  限制前两个

  (6)***根据选择器选择指定的内容

      select:soup.select('.feng')  选择class属性值为feng的所有标签

    - 常见的选择器:标签选择器(a)、类型选择器(.)、id选择器(#)、层级选择器

      - 层级选择器:

        div > p > a > .lala  只能选择最下面一级 class=lala的子标签

        div .dudu  div下面clas=dudu的所有字标签

    【注意】 select选择器返回永远是列表,需要通过下表提取指定的对象

实例:使用bs4实现将诗词名句网站中三国演义小说的每一章的内同爬取到本地磁盘进行存储

import requests
from bs4 import BeautifulSoup

#获得url url
= 'http://www.shicimingju.com/book/sanguoyanyi.html' headers = { 'User-Agent':'' }

#获取网页并转换成BeautifulSoup对象 page_text
= requests.get(url=url,headers=headers).text soup = BeautifulSoup(page_text,'lxml')

#选取class=book-mulu的div标签 >下的ul标签 >下的li标签 >下的所有a标签 a_list
= soup.select('.book-mulu>ul>li>a')

#创建sanguo.txt文件 fp
= open('sanguo.txt','w',encoding='utf-8')

#遍历所有a标签
for a in a_list:
  #获取a标签文本 title
= a.string
  #获取a标签中href属性的文本信息,并组成url detail_url
= 'http://www.shicimingju.com' + a['href']
  #获取新url内的页面信息 detail_page_text
= requests.get(url=detail_url,headers=headers).text #将新url网页创建为BeautifulSoup对象 title_soup = BeautifulSoup(detail_page_text,'lxml')
  #获取新url内class='chapter_content'的div标签的文本信息 content
= title_soup.find('div',class_='chapter_content').text
  #将标题与正文间加入\n并写入sanguo.txt文件 fp.write(title
+'\n'+content)
  #每一章节下载完毕都打印成功
print(title,'下载完毕') print('over') fp.close()

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
python 库安装方法及常用库

python库官方下载地址 https://pypi.org/ https://pypi.python.org/pypi pycharm更换pip源为国内 Python里的pip是官方自带的源,国内使用pip安装的时候十分缓慢,所以最好是更换成中国国内的...

osc_uhmvp9bs
2018/08/07
2
0
Python爬虫实例:爬取豆瓣Top250

入门第一个爬虫一般都是爬这个,实在是太简单。用了 requests 和 bs4 库。 1、检查网页元素,提取所需要的信息并保存。这个用 bs4 就可以,前面的文章中已经有详细的用法阐述。 2、找到下一个...

osc_4bfj636c
2018/08/28
10
0
Python之解BS4库如何安装与使用?正确方法教你

Beautiful Soup 库一般被称为bs4库,支持Python3,是我们写爬虫非常好的第三方库。因用起来十分的简便流畅。所以也被人叫做“美味汤”。目前bs4库的最新版本是4.60。下文会介绍该库的最基本的...

程序员的人生A
06/02
0
0
Python网络爬虫与信息提取-中国大学MOOC

课程大纲 Python网络爬虫与信息提取“The website is the API.”网络爬虫逐渐成为自动获取网络信息的主要形式。还等什么?快写个爬虫探索世界吧! ——“弹指之间·享受创新”,通过4周学习,...

wusejason
2017/06/14
21
0
Python中的网络爬虫怎么用?

爬虫概述 (约2016年)网络爬虫个人使用和科研范畴基本不存在问题,但商业盈利范畴就要看对方了。 通过网站的Robots协议(爬虫协议)可以知道可以和不可以抓取的内容,其中User-Agent: 为允许...

osc_03x3hb6x
2019/09/12
2
0

没有更多内容

加载失败,请刷新页面

加载更多

【Nginx】实现负载均衡、限流、缓存、黑白名单和灰度发布,这是最全的一篇了!

写在前面 在《【高并发】面试官问我如何使用Nginx实现限流,我如此回答轻松拿到了Offer!》一文中,我们主要介绍了如何使用Nginx进行限流,以避免系统被大流量压垮。除此之外,Nginx还有很多...

osc_6l5fg87g
13分钟前
9
0
一小时完成后台开发:DjangoRestFramework开发实践

DjangoRestFramework开发实践 在这之前我写过一篇关于Django与Drf快速开发实践的博客,Django快速开发实践:Drf框架和xadmin配置指北,粗略说了一下Drf配置和基本使用,不过里面只是涉及到最...

osc_z2ru77w0
15分钟前
6
0
数据载入、存储及文件格式知识图谱-《利用Python进行数据分析》

所有内容整理自《利用Python进行数据分析》,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片。

osc_161difcz
16分钟前
8
0
Java异常

一、异常? java系统中将java.lang.Throwable类作为异常的最根类 [java.lang.Throwable是所有异常或错误的顶级类,可以处理任何异常] * java.lang.Throwable * |-----java.lang.Error:一般...

osc_o44vh5qb
18分钟前
10
0
(1)Linux系统中到底应该怎么理解系统的平均负载

每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统的负载情况。比如像下面这样,我在命令行里输入了 uptime 命令,系统也随即给出了结果。 $ uptime...

osc_i5oyb1xr
19分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部