首先需要安装BeautifulSoup模块
安装方法:
win + r 打开运行窗口输入cmd
黑窗输入 where python
cd 进入工作目录下,输入 pip install BeautifulSoup4
出现下图即安装成功
注意看我圈出来的内容,要考的!!!抓取的内容是豆瓣音乐榜 本周流行音乐人 | 上升最快音乐人
有一定前端基础的朋友知道另外两个地方圈起来的是元素的a标签和类名,这是我们接下来想要拿到的内容的依据
新建test.py文件,我们需要使用到requests模块与BeautifulSoup模块,如果没有安装requests,同样通过上方的方式去安装
import requests
from bs4 import BeautifulSoup
#引入模块
url='https://music.douban.com/' #我们拿取的链接是豆瓣音乐
requests.encoding = 'utf-8' #告诉解析器我们是已utf-8格式拿取数据,如果不要这句代码,可能出现拿取的数据乱码现象
res = requests.get(url) #通过requests的get方法拿取页面上的所有信息
resText = res.text #这里抓取到的信息是你在页面上右键==》查看源代码内的所有信息,以字符串形式赋值给resText
soup = BeautifulSoup(resText ,'html.parser') #告诉浏览器你的解析器是'html.parser'
soupList = soup.select('.primary-link') #这里抓到的内容是一个list
#索引的标准: 类目(标签中class = ‘.classname’):使用 '.classname' 句点号
#id(标签中id= ‘#id’):使用 '#id' 句点号
#tagname(标签名 :<a></a>) :使用: 'a'
for i in soupList:
print(soupList.text)
#通过for循环就能拿取到所有的类目为primary-link的text文本信息,但是运行代码后会发现
#抓取到的文本中既有我们需要的文本信息,也有我们不需要的
追加(优化):
import requests
from bs4 import BeautifulSoup
urls = 'https://music.douban.com/'
requests.encoding = 'utf-8'
res = requests.get(urls)
html_sample = res.text
soup = BeautifulSoup(html_sample,'html.parser')
#以上都是相同的方式去抓取页面信息
strs = soup.find_all ('a',class_='title')
#不同的是,这里替换使用了find_all的方法,查找a标签中类目关键字为title的元素,并将其组装为一个list
for i in strs:
print(i.text)
#通过for in 循环拿出每一项
打印结果:
似乎还是没有实现我们想要的结果,这是由于抓取到的a标签元素信息都是相同的,找不到唯一索引,所以拿取的值就有差异,后续会更新解决办法。。。。
小白初来驾到