# 第一次尝试爬虫#
# 爬取B站上的热门视频版#
import sys
from bs4 import BeautifulSoup
import csv
import requests # requests库是一个常用的用于http请求HTML的模块#
import datetime
url = 'https://www.bilibili.com/ranking' #爬取内容所在的网址#
response = requests.get(url) #requests.get( )是requests模块最常用的功能,返回response对像#
#response.status_code 属性 http请求的返回状态,若为200则表示请求成功#
#response.text 属性 html内容以字符串形式返回#
if response.status_code != 200: #判断网页请求是否成功#
print('网页请求失败')
sys.exit() #不成功直接退出#
#HTML由一堆堆标签、及相应标签属性构成#
#HTML里有大大小小很多歌标签,通过标签名+属性来寻找所需标签#
soup = BeautifulSoup(response.text,'html.parser')
items = soup.findAll('li',{'class':'rank-item'})
#将name为li,同时以class=rank-item为attribute的tag全部找出,由item指向#
#寻找自己所需的tag是自己从url中获得#
now_time = datetime.datetime.now().strftime('%Y%m%d')
#获取当前时间,并依=以年月日的格式输出#
file_name = f'bilibili_top100_{now_time}.csv'
#写入文件,选择常见的CSV文件格式#
#f+str为变量形式的字符串#
#大多时候,我们需要每天爬取一次,故加入时间#
with open(file_name,'w',newline='',encoding='utf-8-sig') as f:
#newline=‘’,换行符为空格,encoding为编码方式#
w = csv.writer(f)
w.writerow(['title','url']) #写入第一行,各列名字#
for itm in items:
title = itm.find('a', {'class': 'title'}).text
item_url = itm.find('a', {'class': 'title'}).get('href')
# 找到榜单里的全部视频的title,及url#
# 对于一个tag的attribute可用get()来换取其中内容#
w.writerow([[title],[item_url]])
#将title与item_url写入#
#用【title】是为了防止乱码及item_url散开#
``
爬虫一下子入门
最新推荐文章于 2024-10-17 11:21:39 发布