python从入门到放弃篇35(BeautifulSoup库)爬取A神waiting for love歌词

今天,在研究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编辑器的路径下面,找到文件,打开文件看看,如下图:
在这里插入图片描述
在这里插入图片描述
后面还有很多内容,就不全部截图了,请大家见谅。

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

猜你喜欢

转载自blog.csdn.net/weixin_43408020/article/details/107688495
今日推荐