今天,在研究BeautifulSoup库的使用方法和技巧,我看了一下BeautifulSoup库函数,觉得BeautifulSoup库没有lxml库的xpath函数那么好用,各有优势吧。

案例网址:https://zhidao.baidu.com/question/877231635748319892.html。

完整代码:

from bs4 import BeautifulSoup

import lxml

import urllib.request

import time

url = 'https://zhidao.baidu.com/question/877231635748319892.html'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.48'

}

request = urllib.request.Request(url,headers=headers)response = urllib.request.urlopen(request)

html = response.read().decode('gbk')

soup = BeautifulSoup(html,'lxml')

contents = soup.find_all('p')

for c in contents:

if c.string != None:

print(c.string)

with open(r'waiting_for_love.txt','a',encoding='utf-8') as f:

f.write(c.string+'\n')

time.sleep(1.5)

else:

continue

首先,我们要先去安装BeautifulSoup库(因为是第三方库,不是标准内置库),输入命令:

然后,正式开始我们的程序设计,导入会用到的库。这里我选择三个库联合使用,

我认为这样做会更好一点。

我们设置好url和请求报头,所以有:

url = 'https://zhidao.baidu.com/question/877231635748319892.html'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 Edg/84.0.522.48'

}

request = urllib.request.Request(url,headers=headers)

接着,我们要把设置好的url和请求报头作为urlopen函数的参数传入,并读取源代码,再解码,我们在解码前,先去查看它的编码方式,如下图:

所以有:

之后,因为我们这次主要使用BeautifulSoup,因此,设置soup,并将解码后的html传递给soup,然后,设置lxml解析库为参数,目的是为了加快解析速度。所以有:

接着,我们开始爬取A神的歌词吧。先去查看网页结构进行分析。

通过观察,我们发现大部分内容都在p标签中。所以,确定爬取目标开始设计。用find_all()函数找出所有p标签,得到的结果是一个列表,

如下图:

所以,我们要用for循环遍历,然后打印输出结果,

如下图:

我们会发现结果存在空值None,因此,我们要在程序上再改进一下,让空值不出现。所以有:

如下图:

下面,我们再重新观察一下网页结构,然后,我们发现还有另一种方法。但是,我个人不推荐这种方法,因为页面通常是变动的。我们直接去找到div框架的标签,找到它的属性ID,然后,输出这个div标签下的文本内容。所以有:

如下图:

这个方法有明显的缺陷,目前原因尚未清楚,出现了莫名其妙的数字。

我们既然爬取A神的歌词,就留个纪念吧,好歹也辛苦这么久了。修改代码,再加入时间库,控制爬行速度,所以有:

运行结果:

接着,我们去pycharm编辑器的路径下面,找到文件,打开文件看看,如下图:

后面还有很多内容,就不全部截图了,请大家见谅。

最后,感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。

python soup歌词_python从入门到放弃篇35(BeautifulSoup库)爬取A神waiting for love歌词相关推荐

  1. Python 爬虫篇-利用BeautifulSoup库爬取墨迹天气网的天气信息实例演示,调用墨迹天气api接口获取空气质量

    安装方法: pip install BeautifulSoup4 BeautifulSoup 详细使用文档 墨迹天气抓取演示 墨迹天气没有提供专门的天气接口 api,但我们可以用 BeautifulS ...

  2. Python 爬虫进阶篇-利用beautifulsoup库爬取网页文章内容实战演示

    我们以 fox新闻 网的文章来举例子,把整篇文章爬取出来. 首先是标题,通过结构可以看出来 class 为 article-header 的节点下的 h1 里的内容即是标题,通过 string 可以获 ...

  3. python爬取方式_Python 爬虫入门(三)—— 寻找合适的爬取策略

    写爬虫之前,首先要明确爬取的数据.然后,思考从哪些地方可以获取这些数据.下面以一个实际案例来说明,怎么寻找一个好的爬虫策略.(代码仅供学习交流,切勿用作商业或其他有害行为) 1).方式一:直接爬取网站 ...

  4. python爬虫多线程书籍_Python爬虫入门【10】:电子书多线程爬取

    最近想找几本电子书看看,就翻啊翻,然后呢,找到了一个 叫做 周读的网站 ,网站特别好,简单清爽,书籍很多,而且打开都是百度网盘可以直接下载,更新速度也还可以,于是乎,我给爬了.本篇文章学习即可,这么好 ...

  5. python 北上资金_python爬虫技术:北向资金数据自动爬取!

    好久不见!今天我们继续python的话题啦.python现在势头凶得很,没事刷抖音.刷朋友圈.看公众号,弹出的广告总少不了python."python带你发家致富,财富自由!"广告 ...

  6. 利用Python中的BeautifulSoup库爬取豆瓣读书中书本信息

    利用BeautifulSoup库,获取前250本图书的信息,需要爬取的信息包括书名.书名的URL链接.作者.出版社和出版时间.书本价格.评分和评论,把这些信息存到txt文件,要求将这些信息对齐,排列整 ...

  7. python爬取小说网站资源_利用python的requests和BeautifulSoup库爬取小说网站内容

    1. 什么是Requests?html Requests是用Python语言编写的,基于urllib3来改写的,采用Apache2 Licensed 来源协议的HTTP库.python 它比urlli ...

  8. 利用Python中的BeautifulSoup库爬取安居客第一页信息

    题目: 网址为https://beijing.anjuke.com/sale/, 利用BeautifulSoup库,爬取第1页的信息,具体信息如下:进入每个房源的页面,爬取小区名称.参考预算.发布时间 ...

  9. 使用Python requests和BeautifulSoup库爬取去哪儿网

    功能说明:爬取去哪儿网城市下面若干条景点详细信息并将数据导入Excel表(使用xlwt库) 爬取去哪儿网的教程参考自 https://blog.csdn.net/gscsd_t/article/det ...

最新文章

  1. 性能测试之二——常用的性能测试策略
  2. 京东数据驱动下的个性化推荐
  3. 关于.NET 的网络信息,服务器端与用户端的信息
  4. 报名|腾讯技术开放日·5G技术专场
  5. 用python排序算法_Python - 八大排序算法
  6. Math.random()获取随机数
  7. Python程序控制结构
  8. ICCV 2019 | 华科提出对称限制的校正网络,显著改进场景文本识别
  9. JAVA的多态的优劣,向上转型,向下转型什么意思?
  10. 微信读书App来了 小伙伴们快去占榜吧
  11. yoyo跑_足球YOYO体测大揭秘 失去资格只需两次
  12. 16、Flutter Widget - PageView;
  13. 【专题】CSDN下载频道3月热门资源top100汇总
  14. 蓝桥杯十大常见天阶功法——炎之呼吸.叁之型.动态规划--(上篇)
  15. 为云而生,腾讯云服务器操作系统TencentOS内核正式开源
  16. 《Loy解说Eureka服务端源码(二)》
  17. ICTCLAS的JNI调用接口说明
  18. IDEA中enter键换行问题
  19. 将前端网页生成二维码
  20. css3切角文本框_CSS3+jQuery制作切角的Tabs

热门文章

  1. MySQL采用哪种数据模型_数据库的三种数据模型分别是什么
  2. 【分享rmzt:三国杀猛将游戏主题】
  3. mysql设置乐观锁_mysql数据库怎么设置乐观锁
  4. 关于html5中section标签与div标签的区别
  5. 计算机网络Sever服务器网络搭建实践(一)
  6. 最简单的RPC框架实现
  7. 使用 VaultWarden 搭建个人密码管理器 原先Bitwarden
  8. mockjs——mockjs定义、mockjs安装、mockjs使用、mockjs方法、mockjs语法、代码示例
  9. VS资源视图打不开,提示“加载失败” 怎么办?
  10. Apache绿色版 官网下载+安装(win7)