前几天看到有人提问:。b站哪个python爬虫视频讲的较好?谢谢各位能解答一下。?
于是顺手写了一个小爬虫,把数据爬了下来。 今天有空放一下源代码。
数据源,是在B站搜索框直接搜索“爬虫”,并选择按收藏排序。总结果大概50页,然后爬取该数据。
第一步:启动 chromedriver,无头模式。
from time import sleep
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import pandas as pd
import re
import json# 启动 driver(无头模式)
def start_driver():chrome_options = Options()chrome_options.add_argument("--headless")chrome_options.add_argument("--disable-gpu")driver = webdriver.Chrome(options=chrome_options)return driver
第二步:爬取一页搜索结果,封装为函数。
# 获取一页搜索结果
def get_onepage(driver,url,n):driver.get(url)sleep(3)rlts = driver.find_elements_by_class_name("info")info = {}pttn = "(http.*?)?from"for rlt in rlts:t1 = rlt.find_element_by_xpath('./div[1]/a')v[n] = {"title":t1.text,"url":re.findall(pttn,t1.get_attribute("href"))[0]}t2 = rlt.find_element_by_xpath('./div[3]')x = t2.text.split('n')v[n]["watch_num"] = x[0]v[n]["update"] = x[1]v[n]["upper"] = x[2]n += 1return v,n
第三步:逐页读取所有数据。
driver = start_driver()
n = 1
pages = 51
for i in range(1,pages):url = "https://search.bilibili.com/all?keyword=%E7%88%AC%E8%99%AB&from_source=nav_suggest_new&order=stow&duration=0&tids_"+str(i)try:v,n = get_onepage(driver,url,n)except:break
第四步:数据结果存储。
# 数据保存为 json 文件
file = "bilibili_crawler.json"
with open(file,"w",encoding="utf-8") as f:json.dump(v,f,indent=4,sort_keys=False, ensure_ascii=False)# 也可保存为表格文件
df = pd.DataFrame(v).T
file2 = "bilibili_crawler.csv"
df.to_csv(file2)
点赞,收藏,关注,分享四连。好人一生平安。
看不懂的,评论留言问我。
想要所有数据,站内私信我。