爬取哔哩哔哩全站所有投稿在 2020年03月09日 - 2020年03月12日 的播放前百视频

#哔哩哔哩全站所有投稿在 2020年03月09日 - 2020年03月12日 的播放前百视频
#网页链接:https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3S
import requests
from bs4 import BeautifulSoup
#发出request请求,获取html网页
response=requests.get('https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3S')
response.text#获取源代码
html=response.text
#解析网页,发现标题title和播放量data-box,提取内容
soup=BeautifulSoup(html,'lxml')#构造Soup的对象
a=soup.find('a',class_='title')#python有关键词class了,要加_
res=soup.find_all('a',class_='title')
#for循环提取a标签
num=0
text=''
for i in res:
    num+=1
    text+='{}{}\n'.format(num,i.string)#先把内容保存到变量里去
print(text)
#保存
with open('rank.text','w',encoding='utf8')as fout:
    fout.write(text)

1.打开网页

2.获取源代码

3.解析网页,提取需要的内容,先找第一名的

 

这里找到需要提取的标题a标签,分析特点,它的类是title,在代码中可以用find函数查找

 但是发现打印只能打出一条,所以改用另一条find_all函数

发现成功将排行榜爬取下来,想到可以用for循环把结果一个个打印出来

 

因为内容都是按顺序排下来的,所以可以自己弄数字形成排名

 

 然后把内容保存到一个变量里去并检查有没有正常保存

 

最后直接保存到文件里面去,创建一个rank.txt,以写入的方式打开,把它赋值到fout这个变量里,fout写入获取到的文本内容

 这里是全部代码

#哔哩哔哩全站所有投稿在 2020年03月09日 - 2020年03月12日 的播放前百视频
#网页链接:https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3S
import requests
from bs4 import BeautifulSoup
#发出request请求,获取html网页
response=requests.get('https://www.bilibili.com/ranking?spm_id_from=333.851.b_7072696d61727950616765546162.3S')
response.text#获取源代码
html=response.text
#解析网页,发现标题title和播放量data-box,提取内容
soup=BeautifulSoup(html,'lxml')#构造Soup的对象
a=soup.find('a',class_='title')#python有关键词class了,要加_
res=soup.find_all('a',class_='title')
#for循环提取a标签
num=0
text=''
for i in res:
    num+=1
    text+='{}{}\n'.format(num,i.string)#先把内容保存到变量里去
print(text)
#保存
with open('rank.text','w',encoding='utf8')as fout:
    fout.write(text)

这是获取数据的截图

猜你喜欢

转载自www.cnblogs.com/syc0403/p/12483501.html