python爬虫-----学习bs,爬取丁香园特定帖子的所有回复内容

beautifsoup----爬虫数据挖掘又一大利器

– 安装
conda install beautifulsoup4 或者 pip install beautifulsoup4(这个4代表着bs的版本)
这里我用了conda安装:

– beautiful soup:
BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库.
官方文档:Beautifulsoup官方文档(里面讲的很详细)
–案例:

  • 工具:urllib bs

  • 思考:
    1. 用urllib.request.Request请求网页,使用headers设置用户代理或者使用proxy代理服务器隐 藏身份,因为直接请求,返回403。
    2. 通过查看源代码发现,用户名在auth类下的a标签里,而用户回复内容在postbody类里在这里插入图片描述
    4. 炖一锅汤,使用css选择器 select方法下的get_text()方法找到我们想要的数据
    5. for循环并按想要的格式输出数据

  • 代码:
    在这里插入图片描述
    输出结果:
    在这里插入图片描述


疑问:如何获取所有跟贴战友的name和content?

但是通过结果我们发现,最终结果只有四个战友的名字和其回复内容,但是我们发现登录丁香园账号后这个帖子有很多跟贴。
解决办法:
使用cookie,模拟用户登录
在这里插入图片描述
输出结果:
在这里插入图片描述

**特别提醒:**这里range函数里如果是len(name),结果会多一行“没找到”在这里插入图片描述
原因就是我们用cookie模拟登录,那么最后一个战友的name是自己。


总结:

bs是出了xml bs4等外的非常重要的一种数据提取库
他们的优缺点

  • 正则: 很快,不好用,不许安装
  • beautifulsoup:慢,使用简单,安装简单
  • lxml: 比较快,使用简单,安装一般

bs的四大对象:

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

遍历文档树的方法

  • find_all和find

  • css选择器(select)

猜你喜欢

转载自blog.csdn.net/weixin_40734650/article/details/88088287