bs4 解析 以及用法
bs4解析
bs4:
- 环境安装:
- lxml
- bs4
- bs4编码流程:
- 1.实例化一个bs4对象,且将页面源码数据加载到该对象中
- 2.bs相关的方法或者属性实现标签定位
- 3.取文本或者取属性
- bs的属性和方法:
- soup.tagName
- tagName.string/text/get_text()
- tagName[attrName]
- find(tagName,attrName='value')
- select('层级选择器') > 空格
- 环境的安装:
- pip install lxml
- pip install bs4
- bs4解析原理:
- 实例化一个bs对象,且将页面源码数据加载到该对象中。
- 使用bs对象中封装好的属性或者方法实现标签定位
- 将定位到的标签中的文本(属性)取出
用法:
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
#将本地的一个test.html文档中的源码数据加载到bs对象中
soup = BeautifulSoup(open('./test.html','r',encoding='utf-8'),'lxml')
soup.p #定位到源码中第一个p标签
soup.a['href'] #取属性
soup.img['src']
# 取文本 返回字符串
soup.p.get_text()
# 取标签
soup.div
#
soup.div.string #string直接获取标签的直系文本内容
soup.div.text # 取文本
soup.ul.text
# 查找 只查找第一个元素
soup.find('li') #soup.li
#属性定位
soup.find('div',class_='song')
# 查找所有的 div标签
soup.find_all('div')[0]
# 通过选择器查找 返回列表
soup.select('#feng')
# 获取 内容
soup.select('ul > li > a')[3].string
bs4 爬取某某诗词网
#需求:某某诗词网中的三国演义小说进行爬取:http://www.*****.com/book/sanguoyanyi.html
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
url = 'http://www.****.com/book/sanguoyanyi.html'
page_text = requests.get(url=url,headers=headers).text
#数据解析
soup = BeautifulSoup(page_text,'lxml')
#解析出章节和详情页的url
li_list = soup.select('.book-mulu > ul > li')
fp = open('./三国演义.txt','w',encoding='utf-8')
for li in li_list:
title = li.a.string
detail_url = 'http://www.**********.com'+li.a['href']
#获取了详情页的页面源码数据
detail_page_text = requests.get(url=detail_url,headers=headers).text
soup = BeautifulSoup(detail_page_text,'lxml')
#解析出章节对应的内容
content = soup.find('div',class_='chapter_content').text
fp.write(title+'\n'+content)
print(title,'下载完毕')
fp.close()
bs4 解析 以及用法的更多相关文章
- Python3.x:bs4解析html基础用法
Python3.x:bs4解析html基础用法 代码: import urllib.request from bs4 import BeautifulSoup import re url = r'ht ...
- Intent的详细解析以及用法
Intent的详细解析以及用法 Android的四大组件分别为Activity .Service.BroadcastReceiver(广播接收器).ContentProvider(内容提供者 ...
- bs4解析库
beautifulsoup4 bs4解析库是灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便地实现网页的提取 要解析的html标签 from bs4 import B ...
- 爬虫的三种解析方式(正则解析, xpath解析, bs4解析)
一 : 正则解析 : 常用正则回顾: 单字符: . : 除换行符以外的所有字符 [] : [aoe] [a-w] 匹配集合中任意一个字符 \d : 数字 [0-9] \D : 非数字 \w : 非数字 ...
- bs4解析
介绍:将一个html文档转换成BeautifulSoup对象,然后通过对象的方法或属性查找指定的节点内容 转换本地文件: soup = BeautifulSoup(fp,'lxml') fp为文档 ...
- python bs4解析网页时 bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to inst(转)
Python小白,学习时候用到bs4解析网站,报错 bs4.FeatureNotFound: Couldn't find a tree builder with the features you re ...
- 爬虫系列二(数据清洗--->bs4解析数据)
一 BeautifulSoup解析 1 环境安装 - 需要将pip源设置为国内源,阿里源.豆瓣源.网易源等 - windows (1)打开文件资源管理器(文件夹地址栏中) (2)地址栏上面输入 %ap ...
- pytho爬虫使用bs4 解析页面和提取数据
页面解析和数据提取 关注公众号"轻松学编程"了解更多. 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的 ...
- JQuery 中 is(':visible') 解析及用法
实例 选择 <body> 元素中每个可见的元素: $("body :visible") 亲自试一试 定义和用法 :visible 选择器选取每个当前是可见的元素. 除以 ...
随机推荐
- .NET CORE 设置cookie以及获取cookie
使用我这个方式的前提是在mvc中,确认你安装了:Microsoft.AspNetCore.Mvc. 然后在继承了Controller的类型中使用我所说的方法. 直接使用即可,我是封装了方法供我自己使用 ...
- 软件测试工程师这样面试,拿到offer的几率是80%
面试难还是不难?取决于面试者的底蕴(气场+技能).心态和认知及沟通技巧.面试其实可以理解为一场聊天和谈判,在这过程中有心理.思想上的碰撞和博弈.其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他希 ...
- nginx部署与安装
1.在学习ngnix的时候,免不了需要进行安装,安装其实很简单,一个shell脚本就可以搞定可以参考如下 使用root用户执行nginx-install.sh脚本即可,脚本如下: #!/bin/bas ...
- 【linux】如何开放防火墙端口
linux默认大部分端口的是关闭的.而我们在开发.部署环境时,需要用到大量的服务,如mysql.tomcat.redis.zk等,需要开放指定的端口号. 以mysql端口3306为例 首先编辑服务器的 ...
- css:Media Queries: How to target desktop, tablet and mobile?
<!doctype html> <html> <head> <meta name="viewport" content="wid ...
- 用python实现一个小游戏——抽牌
想要实现一个抽牌的功能,有很多种实现方法,这时候我们创造一个对象,通过内置方法来完成这个功能: # Author:Zhang Zhao # -*-coding:utf-8-*- from collec ...
- CNN中,1X1卷积核到底有什么作用呢?
CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...
- 如何在数据表当中找出被删掉的数据行ID
这个问题是一年前我刚步入IT行业的一个面试题,当时抓破头皮都想不到的问题,但现在回想过去自身不禁感到可笑,不多扯直接写解决方案.如何在数据表当中找出被删掉的数据行ID,意思是:在一堆的数据当中,让你找 ...
- 智能POS相关FAQ
1.安卓智能POS(一体机)的口碑点餐已知问题: 1.由于口碑的组合套餐接口不稳定,强烈建议商户不要使用组合套餐商品.已开通口碑后付的门店,如果有组合套餐商品,暂时不要使用组合套餐商品:有组合套餐需求 ...
- Python基于皮尔逊系数实现股票预测
# -*- coding: utf-8 -*- """ Created on Mon Dec 2 14:49:59 2018 @author: zhen "&q ...