鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[爬虫] 找出B站最受欢迎的编程课程

  [复制链接]
发表于 2019-8-13 15:05:33 | 显示全部楼层
朕不想知道 啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-15 17:50:17 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-15 18:59:56 From FishC Mobile | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-16 11:11:26 | 显示全部楼层
真想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-16 15:44:18 | 显示全部楼层
定义的get_data(text)中的text哪来的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-16 22:29:28 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 10:40:47 | 显示全部楼层
    tags = soup.select("ul['tag-area clearfix'] > li")
定位标签的这个还有用么?我试了下报错了:
soupsieve.util.SelectorSyntaxError: Malformed attribute selector at position 2
  line 1:
ul['tag-area clearfix'] > li

然后我改成:
# v_tag > ul > li 正常可以定位到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 10:43:07 | 显示全部楼层
tags = soup.select("ul[class = 'tag-area clearfix'] > li")
加上class=就正常了.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-17 21:46:23 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-21 22:35:54 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-30 20:59:15 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-6 15:02:54 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-9 17:33:24 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-18 12:16:11 | 显示全部楼层
cc452987852 发表于 2019-5-28 13:29
我的天   可以了  我昨天试了一模一样的东西 不可以  都惊了

videos = soup.find_all("li", class_="video matrix")
改为
videos = soup.find_all("li", class_="video-item matrix")
B站的 类名换了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-3 11:38:44 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-5 18:22:56 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-7 20:54:19 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-10 17:53:51 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-10-17 11:32:42 | 显示全部楼层
import requests
import bs4


def open_url(keyword, page, each): #-------------------------打开链接
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
               "referer": "https://search.bilibili.com"}
    order = ["totalrank", "click", "pubdate", "dm", "stow"]
    res = []
    for i in range(page):
        params = {"keyword": keyword,
                  "order": order[each],
                  "duration": "4", # 时长:60分钟以上
                  "tids_1": "36", # 分区:科技
                  "page": f"{i+1}"}  

        url = "https://search.bilibili.com/all"
        
        res.append(requests.get(url, params=params, headers=headers).text)

    return res


def get_data(res, page): #-----------------------------------获取数据
    title = []
    link = []
    msg = []

    for i in range(page):
        soup = bs4.BeautifulSoup(res[i], "html.parser")
        target = soup.find_all("li", class_="video-item matrix")
        title.extend([each.a["title"] for each in target])
        link.extend([each.a["href"] for each in target])

        target = soup.find_all("span", class_="so-icon")
        msg.extend([each.text.strip() for each in target])

    msg = [msg[i:i+4] for i in range(0,page*80,4)] # 将列表内部划分成多个子列表
   
    return title, link, msg


def save_file(data, page, filename): #-----------------------保存文件
    result = []
    for i in range(page*20):
        result.append(f"【{i+1}】 " + data[0][i] + "  " + data[1][i][2:-12] + "  " + "  ".join(data[2][i]) + "\n\n")
        
    with open(f"E:\\{filename}.txt", "w", encoding="utf-8") as f:
        f.writelines(each for each in result)


def main():
    keyword = input("请输入关键词:")
    page = int(input("请输入需要爬取的页数(1~50):"))

    name = ["综合排序", "最多点击", "最新发布", "最多弹幕", "最多收藏"]
    for each in range(len(name)):
        res = open_url(keyword, page, each)
        data = get_data(res, page)
        save_file(data, page, name[each])


if __name__ == "__main__":
    main()

=================================================================

感觉我写的比小甲鱼的资源消耗大一些
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-24 10:19:20 | 显示全部楼层
支持!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-21 17:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表