beautifulsoup解析

python独有

优势:简单、便捷、高效
- 环境安装 需要将pip源设置为国内源
-需要安装:pip install bs4
bs4在使用时需要一个第三方库
pip install lxml
流程:
核心思想:可以将html文档转换成Beautiful对象,然后调用对象属性和方法进行html指定内容的定位和查找
  • 1.导包
  • 2.创建Beautiful对象:
    • 如果html文档来源于本地:Beautiful('open('本地html文件)',lxml)
    • 如果html文档来源于网络:Beautiful('网络请求到的页面数据','lxml')
  • 3.使用方法和属性:
    • 根据标签名查找

      • soup.a 只能找到第一个符合要求的标签
    • 获取属性
      • soup.a.attrs 获取a所有的属性和属性值,返回一个字典
      • soup.a.attrs['href'] 获取href属性 也可以简写为 soup.a['href']
    • 获取内容
      • soup.a.string
      • soup.a.text
      • soup.a.get_text() 注意:如果标签还有标签,那么string获取的结果为None,而其他两个,可以获取文本内容 -find:找到第一个符合要求的标签
      • soup.find('a')
      • soup.find('a',title='xxx') 类似的
      • soup.find('a',id='xxx') -finAll 获取所有符合条件的标签
      • soup.findAll('a')
      • soup.findAll(['a','b']) 找到所有的a标签和b标签
      • soup.findAll('a',limit=2) 限制取前两个
    • 根据选择器选择指定的内容 soup.select() -常见的选择器:标签选择器、类选择器(.)、id选择器(#)、层级选择器
        - 层级选择器:
      div .dudu #lala 空格表示下面好多级
      div > p > a > .lala > 只能是下面一级

      注意:select返回的永远是列表,可以通过下标提取指定的对象

练习

  • 需求:爬取古诗文网中三国小说里的标题和内容
import requests
from bs4 import BeautifulSoup
url = 'http://www.shicimingju.com/book/sanguoyanyi.html'
# 自定义请求头信息
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36' }
page_text = requests.get(url=url,headers=headers).text
# 数据解析
soup = BeautifulSoup(page_text,'lxml')
li_list=soup.select('.book-mulu > ul > li > a')
# type(li_list[0]) bs4.element.Tag Tag类型的数据可以继续调用属性方法进行解析
f = open('./三国演义.txt','w',encoding='utf-8')
for li in li_list:
title = li.text
# print(type(title))
conten_url ='http://www.shicimingju.com' + li.attrs['href']
content_page = requests.get(url=conten_url,headers=headers).text
content_soup = BeautifulSoup(content_page,'lxml')
content = content_soup.select('.chapter_content')[0]
# print(content.text)
f.write(title+content.text+'\n\n\n')
print(title+' 已写入')

beautifulsoup解析的更多相关文章

  1. BeautifulSoup解析器的选择

    BeautifulSoup解析器 在我们使用BeautifulSoup的时候,选择怎样的解析器是至关重要的.使用不同的解析器有可能会出现不同的结果! 今天遇到一个坑,在解析某html的时候.使用htm ...

  2. Python3.x的BeautifulSoup解析html常用函数

    Python3.x的BeautifulSoup解析html常用函数 1,初始化: soup = BeautifulSoup(html) # html为html源代码字符串,type(html) == ...

  3. Python3.x:BeautifulSoup()解析网页内容出现乱码

    Python3.x:BeautifulSoup()解析网页内容出现乱码 问题: start_html = requests.get(all_url, headers=Hostreferer) Beau ...

  4. python3+beautifulSoup4.6抓取某网站小说(三)网页分析,BeautifulSoup解析

    本章学习内容:将网站上的小说都爬下来,存储到本地. 目标网站:www.cuiweijuxs.com 分析页面,发现一共4步:从主页进入分版打开分页列表.打开分页下所有链接.打开作品页面.打开单章内容. ...

  5. Python爬虫 | Beautifulsoup解析html页面

    引入 大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据.因此,在聚焦爬虫中使用数据解析.所以,我们的数据爬取的流程为: 指定url 基于reque ...

  6. 第14.12节 Python中使用BeautifulSoup解析http报文:使用select方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>和<第14.11节 Python中使用BeautifulSo ...

  7. 第14.11节 Python中使用BeautifulSoup解析http报文:使用查找方法快速定位内容

    一. 引言 在<第14.10节 Python中使用BeautifulSoup解析http报文:html标签相关属性的访问>介绍了BeautifulSoup对象的主要属性,通过这些属性可以访 ...

  8. BeautifulSoup解析库的介绍和使用

    ### BeautifulSoup解析库的介绍和使用 ### 三大选择器:节点选择器,方法选择器,CSS选择器 ### 使用建议:方法选择器 > CSS选择器 > 节点选择器 ## 测试文 ...

  9. BeautifulSoup解析非标准HTML的问题

    发现问题: BeautifulSoup版本:4.3.2 在用BeautifulSoup.find_all()搜索HTML时,遇到下面的代码: <a href="/shipin/dong ...

随机推荐

  1. [原创]Nodejs 远程执行linux shell

    分享几个基于nodejs远程执行linux shell的函数 参数说明: ips - 一个存有IP地址的数组对象 /** * Created by kevalin on 2015/4/27. */ v ...

  2. ASP编码规范

    ASP编码规范(--::) 第一章 ASP编码规范通述 ASP编码分为两大部分,一部分为静态文件编码,一部分为包含服务器端脚本的动态文件编码. 静态文件编码分script编码和HTML编码两部分. 服 ...

  3. 说说C#中的enum吧

    enum,就是枚举类型,它是struct,int,single,double一样,都属于值类型,从ValueType类型中派生,存储在栈中.它在被创建时,不需要分配内在空间,所以对程序的性能是有好处的 ...

  4. spring增强

    1.前置增强 接口:ISomeService public interface ISomeService { public void doSome(); } 类 public class MyBefo ...

  5. Pod管理的iOS项目修改工程名

    声明:本文大部分内容来自于以下网址,其余的部分是自己尝试的总结和补充. http://www.jianshu.com/p/5f088acecf64 完整修改iOS工程名1 http://www.cnb ...

  6. cd进入相关目录的命令

    今天不记得怎么进入Linux的根目录了,查询了下顺便复习下其他命令: 1.[root@localhost]#cd /usr 切换至根目录下的文件夹要加"/" 2.[root@loc ...

  7. 【踩坑】遇到 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 报错

    今天在重做 iblog 客户端时,测试接口情况,发现了 org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  8. SublimeText相关配置

    安转插件:案例格式化HTML代码,需要安装插件,具体安装步骤如下: 1.打开菜单->首选项->插件控制,输入 install package 2.等待程序进入插件管理功能,再输入插件名称: ...

  9. zblog删除网站后台顶部菜单中的“官方网站”链接

    文件\zb_system\function\c_system_admin.php 注释或删除代码 $topmenus[] = MakeTopMenu("misc", $zbp-&g ...

  10. 使用Python开发环境Wing IDE设立项目注意事项

    使用Wing IDE的第一步是建立一个项目文件,这样Wing IDE就可以找到并分析源代码,存储工作. Wing IDE会自动以默认的项目进行启动.在本教程中用户也可以使用这个默认项目进行示例操作.如 ...