Products
GG网络技术分享 2025-03-18 16:14 1
想做个b站爬虫,在社区老哥的帮助下解决了视频链接获取的问题,但想再用正则表达式获取标题的时候,得到的却是作者空间的链接。
这个爬虫基本思路是利用bs4获取页面的html代码,然后正则表达式提取信息。
这个是b站视频的html代码
<li data-id="421946246" data-rank="1" class="rank-item"><div class="num">1</div> <div class="content"><div class="img"><a href="//www.bilibili.com/video/BV1N3411b7Bo" target="_blank"><img class="lazy-image cover" data-src="//i0.hdslb.com/bfs/archive/4b49d94599d2aff64e76e5a8e1f7bb38ff195b61.jpg@228w_140h_1c.webp" src="//i0.hdslb.com/bfs/archive/4b49d94599d2aff64e76e5a8e1f7bb38ff195b61.jpg@228w_140h_1c.webp" lazy="loaded"></a> <div class="w-later van-watchlater"><span class="wl-tips" style="display:none;"></span></div></div> <div class="info"><a href="//www.bilibili.com/video/BV1N3411b7Bo" target="_blank" class="title">离大谱!随机帮别人实现梦想,竟然跑断了腿(物理)!</a> <!----> <div class="detail"><span class="data-box"><i class="b-icon play"></i> 566.4万
</span> <span class="data-box"><i class="b-icon view"></i> 8.3万
</span> <a target="_blank" href="//space.bilibili.com/546195"><span class="data-box up-name"><i class="b-icon author"></i> 老番茄
</span></a></div> <div class="pts"><div>9317813</div>综合得分
</div></div> <div class="other-panel"><div class="other"><a target="_blank" href="//www.bilibili.com/video/BV1Bi4y1o7uj" class="other-link"><span class="title">好兄弟是什么,能吃吗?</span> <span>综合评分</span> <strong>2733969</strong></a></div> <a class="more-data" style="display:none;"> 显示UP主全部上榜视频
<i></i></a></div></div></li>
这是我的python代码
import sysimport re
import urllib.request
import xlwt
from bs4 import BeautifulSoup
#正则表达式定义筛选规则findLink=re.compile(r'<a href="//(.*?)" target="_blank">.*?</a>',re.S)#视频链接#获取对应url网页的数据def get_url(url):
head = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36 Edg/96.0.1054.34"}#模拟计算机 request = urllib.request.Request(url,headers=head)#以headers身份访问url网页 html='' try:
reponse = urllib.request.urlopen(request)
html = reponse.read().decode('utf-8')
except urllib.error.URLError as e:
if hasattr(e,'code'):
print(e.code)
if hasattr(e,'reason'):
print(e.reason)
return html
#调用get_url函数获取指定网页数据,以html形式存储def get_data(baseurl):
data_list=[]
html=get_url(baseurl)#获取get_url爬到的数据 soup=BeautifulSoup(html,'html.parser')#定义使用html解读器解读数据的变量soup for item in soup.find_all('div',class_="content"):
data=[]#存储单个视频全部信息 item=str(item)#字符串化 link=re.findall(findLink,item)[0]#视频链接 data.append(link)
authorlink=re.findall(findLink,item)[1]#作者链接(原本想获取标题) data.append(authorlink)
data_list.append(data)#保存数据 print(data_list)
return data_list
get_data('https://www.bilibili.com/v/popular/rank/all')
以及问一下,排行榜里的其他信息有办法用正则表达式写出来吗?鄙人没学过html,纯粹是依葫芦画瓢的。
可以直接用正则,不需要去解析
正则代码如下
import reimport requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
url='https://www.bilibili.com/v/popular/rank/all'res=requests.get(url,headers=headers)
# print(res.text)title=re.findall('class="title">(.*?)</a> <!----> <div class="detail"',res.text)
href=re.findall('<div class="info"><a href="//(.*?)" target="_blank"',res.text)
all_sorce=re.findall('</span></a></div> <div class="pts"><div>(.*?)</div>',res.text)
for i in range(len(title)):
print('标题为:',title[i])
print('链接为:',href[i])
print('综合得分为:',all_sorce[i])
print('----------分割线----------')
我是JAVA爬虫,我用xpath解析,python的xpath写法你搜下
大数据信息资料采集:视频排行榜哔哩哔哩二次元网站视频内容采集
-------------
数据采集满足多种业务场景:适合产品、运营、销售、数据分析、政府机关、电商从业者、学术研究等多种身份职业。
舆情监控:全方位监测公开信息,抢先获取舆论趋势。
市场分析:获取用户真实行为数据,全面把握顾客真实需求。
产品研发:强力支撑用户调研,准确获取用户反馈和偏好。
风险预测:高效信息采集和数据清洗,及时应对系统风险。
助您在数据中快速挖掘新客户;透视竞争对手的业务数据,分析客户行为拓展新业务,精准营销降低风险和预算。
对大量消费者提供产品或服务的企业可以利用大数据进行精准营销;
做小而美模式的中小微企业可以利用大数据做服务转型;
面临互联网压力之下必须转型的传统企业需要与时俱进充分利用大数据的价值。
------------
全网统一自媒体号:大数据信息资料采集
欢迎关注。
-------
---------
以下文字可忽略
哔哩哔哩美丽小学
2019年6月26日,在哔哩哔哩十周年活动现场,B 站正式宣布与美丽中国达成深度合作 [178] 。B 站将扶持建设一所“哔哩哔哩美丽小学”,并为其提供包含资金、资源等方面的综合支持;同时联合美丽中国招募和培养青年支教教师,弥补乡村教育资源缺失问题,引导年轻一代更好地关注乡村教育。
中国宋庆龄基金会人民日报媒体公益专项基金
2019年2月22日,中国宋庆龄基金会人民日报媒体公益专项基金启动仪式在人民日报社新媒体大厦举行。作为联合发起单位及首个捐赠企业,上海哔哩哔哩科技有限公司于去年底与中国宋庆龄基金会签署相关协议,向基金会捐赠善款并携手专项基金,开展符合基金运营有关要求的各类重大活动与公益项目。
2020年
1月26日,中国宋庆龄基金会人民日报媒体公益专项基金发起“新冠肺炎疫情一线媒体人保障计划”,联合中国平安集团、哔哩哔哩,为在湖北一线采访的媒体工作者提供人身意外保障和因公染病定向补助。定向补助预算1000万元,由人民日报媒体公益专项基金发起方之一——哔哩哔哩捐助。
Demand feedback