先贴一个beautifulsoup的官方文档,https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#id12

requests库用来获取url的响应,但是获取到确实网页代码,为了拿到自己想要的东西,我们需要用一下beautifulsoup这个库,这个库能把想要的东西提取出来。

下载和安装在官方文档里都有,这里还要说一下解析器。beautifulsoup这个库除了支持python标准库中的HTML解析器,还支持其他类似,lxml和html5lib。

上面这张表来自官方文档,选择哪种解析器就因人而异了。

接下来进入正文,首先要构造一个对象,用soup = BeautifulSoup(html,'lxml'),这html可以是事先用requests库请求来的,也可以是自己写的,当然,也可以用soup = BeautifulSoup(open("index.html"))这种方法打开自己html。

然后就是去查看那个html,当html里有a标签时,用soup.a即可输出遇到的第一条a标签,同理,也可以soup.title输出html的title标签。

仅仅是第一个标签那么满足不了我们的需求,我们需要所有的标签里的数据就需要用到findAll这个方法啦,用all_a=soup.findAll('a'),即可获得所有的a标签,但是这时候的输出都是带着a标签的,想要只获得内容,有需要用到string方法,all_a.string,即可。

话不多说,先试着把小米官网中的h2标签,即小标题给爬取下来试试

from bs4 import BeautifulSoup
import lxml
import requests url = 'https://www.mi.com/'
try:
#模拟浏览器
kv = {'user-agent':'Mozilla/5.0'}
r = requests.get(url , headers = kv)
#状态码检查,用于
r.raise_for_status()
r.encoding = r.apparent_encoding
soup = BeautifulSoup(r.text,'lxml')
for tag in soup.findAll('h2'):
print(tag.string)
except:
("爬取失败")

然后再讲讲string方法,在官方文档中的解释是这样的

简单的说就是,当你获取的标签里没有别的标签了,你调用这个方法会输出这个标签里的内容,但这个标签里如果有其他的小标签和内容时,返回一个none值,比如说再爬取小米的a标签时、

这一条数据返回的就是none值

我们爬取数据的时候有时会把空白爬进去,但是又不想要空白的时候可以用.stripped_strings方法去除掉空白

然后讲一讲定位就比如说上面那条带着i标签的a标签,我们可以先找到i标签,在用他的父节点输出a标签,用。parent的方法,同理,通过 .next_siblings.previous_siblings 属性可以找到当前节点的兄弟节点

最新文章

  1. [moka同学笔记]Linux命令基本格式及目录处理命令
  2. [问题2015S12] 复旦高等代数 II(14级)每周一题(第十三教学周)
  3. Sample: Write And Read data from HDFS with java API
  4. 转MYSQL学习(三) 函数
  5. AX 条码打印
  6. hdu 1305 Immediate Decodability
  7. MFC弹出模拟对话框
  8. 文件磁盘读写类CArchive类
  9. 【具体数学 读书笔记】1.2 Lines in the Plane
  10. javascript 学习随笔7
  11. oracle备份脚本
  12. vue-cli webpack在node环境下安装使用
  13. Install Composer on CentOS
  14. Extjs:添加查看全部按钮
  15. 洛谷P3796 【模板】AC自动机(加强版)(AC自动机)
  16. Kafka自带zookeeper报错INFO Got user-level KeeperException when processing xxx Error Path:/brokers Error:KeeperErrorCode = NodeExists for /brokers (org.apache.zookeeper.server.PrepRequestProcessor)
  17. WebRTC学习之ICE深入理解
  18. 苹果手机 disabled 的背景颜色没有
  19. 微信h5支付demo微信H5支付demo非微信浏览器支付demo微信wap支付
  20. C# int.ToString()

热门文章

  1. css 字体旋转
  2. 安卓android eclipse运行提示no compatible targets were found
  3. Word报表生成
  4. json 的key值不能是变量
  5. py 二级习题(turtle)
  6. mybatis第一天02
  7. many connection errors,更改max_connection_errors的值
  8. python求极值点(波峰波谷)
  9. C语言strcat()函数:字符串连接(拼接)
  10. ARM(哈弗、冯氏结构、总线和IO访问、处理器状态和处理机模式)