首先需要安装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标签元素信息都是相同的,找不到唯一索引,所以拿取的值就有差异,后续会更新解决办法。。。。 小白初来驾到