Python_Crawler_Urllib库_bilibili搜索

简介: Python_Crawler_Urllib库_bilibili搜索

环境介绍:

pycharm:图片下方附有下载链接

python:图片下方附有下载链接

image.png

Download PyCharm: Python IDE for Professional Developers by JetBrains

python:图片下方附有下载链接


image.png

Python Releases for Windows | Python.org

依赖库:配置完pycharm后,安装所需的库

image.png

爬虫源码

初步框架

from bs4 import BeautifulSoup
import re
import urllib.request,urllib.error
import xlwt
import time
def main():
    baseurl = "https://search.bilibili.com/video?keyword=%E9%9D%9E%E8%AF%9A%E5%8B%BF%E6%89%B0&page="
    datalist = getData(baseurl)
    savepath = ".\\非诚勿扰.xls"
    saveData(datalist,savepath)
#正则查找规则
findUrl = re.compile(r'<a class="img-anchor" href="(.*?)[?]from')
findImgSrc = re.compile(r'<a .*? title="(.*?)"',re.S)
findRB = re.compile(r'<span class="so-imgTag_rb">(.*?)</span>')
findUpName = re.compile(r'<a class="up-name".*?>(.*?)</a>')
findSoIconTime = re.compile(r'<i class="icon-date"></i>(.*?)</span>',re.S)
findWatchNum = re.compile(r'<i class="icon-playtime"></i>(.*?)</span>',re.S)
def getData(baseurl):
    datalist = []
    for i in range(1,51):
        url = baseurl + str(i)
        html = askURL(url)
        time.sleep(0.5)
        #解析
        soup = BeautifulSoup(html,"html.parser")
        for item in soup.find_all('li',class_='video-item matrix'):        
            data = []       #保存一个视频的所有信息
            item = str(item)
            Url = re.findall(findUrl,item)[0]
            pint = 'https:'
            data.append(pint+Url)
            ImgSrc = re.findall(findImgSrc,item)[0]
            data.append(ImgSrc)
            RB = re.findall(findRB,item)[0]
            data.append(RB)
            UpName = re.findall(findUpName,item)[0]
            data.append(UpName)
            SoIc = re.findall(findSoIconTime,item)[0].replace("\n","")
            data.append(SoIc.strip())
            Watch = re.findall(findWatchNum,item)[0].replace("\n","")
            data.append(Watch.strip())
            datalist.append(data)
    return datalist
def askURL(url):
    head = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36"
            }
        #用户代理
    request = urllib.request.Request(url,headers=head)
    html = ""
    try:
        response = urllib.request.urlopen(request)
        html = response.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
def saveData(datalist,savepath):
    book = xlwt.Workbook(encoding="utf-8",style_compression=0)
    sheet = book.add_sheet('非诚勿扰b站视频',cell_overwrite_ok=True)
    col = ("视频链接","标题","视频时长","up主","发布时间","播放次数")
    for i in range (0,6):
        sheet.write(0,i,col[i])
    for i in range(0,1000):
        print("第%d条" %(i+1))
        data = datalist[i]
        for j in range(0,6):
            sheet.write(i+1,j,data[j])
    book.save(savepath)
if __name__ == '__main__':
    main()
    print("完成!")
相关文章
|
3天前
|
Python
在Python中绘制K线图,可以使用matplotlib和mplfinance库
使用Python的matplotlib和mplfinance库可绘制金融K线图。mplfinance提供便利的绘图功能,示例代码显示如何加载CSV数据(含开盘、最高、最低、收盘价及成交量),并用`mpf.plot()`绘制K线图,设置类型为&#39;candle&#39;,显示移动平均线(mav)和成交量信息。可通过调整参数自定义图表样式,详情参考mplfinance文档。
13 2
|
4天前
|
机器学习/深度学习 边缘计算 TensorFlow
【Python机器学习专栏】Python机器学习工具与库的未来展望
【4月更文挑战第30天】本文探讨了Python在机器学习中的关键角色,重点介绍了Scikit-learn、TensorFlow和PyTorch等流行库。随着技术进步,未来Python机器学习工具将聚焦自动化、智能化、可解释性和可信赖性,并促进跨领域创新,结合云端与边缘计算,为各领域应用带来更高效、可靠的解决方案。
|
4天前
|
机器学习/深度学习 Python
【Python 机器学习专栏】模型选择中的交叉验证与网格搜索
【4月更文挑战第30天】交叉验证和网格搜索是机器学习中优化模型的关键技术。交叉验证通过划分数据集进行多次评估,如K折和留一法,确保模型性能的稳定性。网格搜索遍历预定义参数组合,寻找最佳参数设置。两者结合能全面评估模型并避免过拟合。Python中可使用`sklearn`库实现这一过程,但需注意计算成本、过拟合风险及数据适应性。理解并熟练应用这些方法能提升模型性能和泛化能力。
|
4天前
|
Serverless Python
使用Python的pandas和matplotlib库绘制移动平均线(MA)示例
使用Python的pandas和matplotlib库绘制移动平均线(MA)示例:加载CSV数据,计算5日、10日和20日MA,然后在K线图上绘制。通过`rolling()`计算平均值,`plot()`函数展示图表,`legend()`添加图例。可利用matplotlib参数自定义样式。查阅matplotlib文档以获取更多定制选项。
15 1
|
4天前
|
数据采集 SQL 数据挖掘
Python数据分析中的Pandas库应用指南
在数据科学和分析领域,Python语言已经成为了一种非常流行的工具。本文将介绍Python中的Pandas库,该库提供了强大的数据结构和数据分析工具,使得数据处理变得更加简单高效。通过详细的示例和应用指南,读者将了解到如何使用Pandas库进行数据加载、清洗、转换和分析,从而提升数据处理的效率和准确性。
|
4天前
|
SQL 关系型数据库 MySQL
使用Python的pymysql库连接MySQL,执行CRUD操作
使用Python的pymysql库连接MySQL,执行CRUD操作:安装pymysql,然后连接(host=&#39;localhost&#39;,user=&#39;root&#39;,password=&#39;yourpassword&#39;,database=&#39;yourdatabase&#39;),创建游标。查询数据示例:`SELECT * FROM yourtable`;插入数据:`INSERT INTO yourtable...`;更新数据:`UPDATE yourtable SET...`;删除数据:`DELETE FROM yourtable WHERE...`。
12 0
|
5天前
|
机器学习/深度学习 算法 数据挖掘
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧
|
5天前
|
存储 Python Windows
轻松学会openpyxl库,Python处理Excel有如神助
轻松学会openpyxl库,Python处理Excel有如神助
|
5天前
|
NoSQL Python
在Python中,我们可以使用许多库来处理Excel文件
Python处理Excel常用pandas和openpyxl库。pandas的`read_excel`用于读取文件,`to_excel`写入;示例展示了数据框操作。openpyxl则用于处理复杂情况,如多工作表,`load_workbook`加载文件,`iter_rows`读取数据,`Workbook`创建新文件,写入单元格数据后保存。
13 1
|
5天前
|
Python
使用Seaborn库创建图形的使用案例
【4月更文挑战第29天】该代码段首先导入seaborn和matplotlib库,然后加载名为&quot;titanic&quot;的数据集。接着,它创建一个画布并设定子图大小。通过seaborn的FacetGrid以&quot;Attrition_Flag&quot;为列进行分组,映射数据到网格上,用histplot展示&quot;Customer_Age&quot;的直方图分布。同样,也使用boxplot方法生成&quot;Freq&quot;的箱线图。最后展示所有图形。
8 2