鱼C论坛

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

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

  [复制链接]
发表于 2020-9-9 18:02:36 | 显示全部楼层
朕想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-9 21:32:27 | 显示全部楼层
吱吱吱吱
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-16 18:30:17 | 显示全部楼层
为什么照着抄,在IDLE的交互页面看不到结果。。。。
res.text是有输出,但是过滤后的却是一直不现实。就是是包装到文件中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-16 18:51:36 | 显示全部楼层
你好,小甲鱼,我根据这个来写,为什么不管在交互页面还是pycha,都没办法把数据读出来。
另外,直接copy你的全部完整的代码,弄出来的表格都是空的?为啥?


import requests
import bs4

res = requests.get("https://search.bilibili.com/all?keyword=编程&order=totalrank&duration=0&tids_1=0")
print(res.text)
soup = bs4.BeautifulSoup(res.text,"html.parser")
titles = soup.find_all("li",class_="video matrix")
for each in titles:
    print(each.a["title"])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-16 18:57:55 | 显示全部楼层
原来是因为B站的class的标签名字改了。。。。。
改成下面就可以了。
诶,死读书的人。。。。。
titles = soup.find_all("li",class_="video-item matrix")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-9-18 15:05:31 | 显示全部楼层
好多不懂:
请大神指教
1:
tags = video.select("div[class='tags'] > span")  这个是什么意思?select是一种什么方法?
        for tag in tags:
            datas.append(''.join(tag.text.split()))    这个更不懂?空格后的.点的方法是join?内部还有带切片?
2:
"s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return zip(*[iter(iterable)]*n)   这个直接懵逼,怎么去理解这个?

3:这个更不懂
for page in range(1, pages+1):
            url = "https://search.bilibili.com/all?keyword={}&order={}&duration=4&tids_1=36&page={}".format(keyword, order[i], page)
            text = get_html(url)
            datas = get_datas(text)
            # 为每种排序创建一个文本文件单独存放
            with open(order_name[i]+'.txt', 'a', encoding="utf-8") as file:
                for video_title, video_URL, video_watch, video_dm, video_time, video_up in grouped(datas, 6):
                    file.write(' + '.join([str(index), video_title, video_URL, video_watch, video_dm, video_time, video_up, '\n']))
                    index += 1
            # 做一只善意的爬虫,不要给服务器带来负担
            time.sleep(1)
   求指导啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-19 10:31:11 | 显示全部楼层
崴,幺幺玲嘛,有人再装b,场面快控制不住了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-20 18:26:24 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-24 14:25:37 | 显示全部楼层
1111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2020-10-23 17:24:25 | 显示全部楼层
opengjie 发表于 2020-9-18 15:05
好多不懂:
请大神指教
1:

啊。老哥懂了吗,你第一个问题,Select是那个Bs4模块里面用来解析网页的方法,就是解析网页,得到想要的内容,你可以去看看小龟龟的文章,你去过一遍,就知道大致了,熟练还得多去动手,

第二个问题,第一个是join拼接字符串,然后里面的内容再试空白字符作为分隔符对字符串进行分割

第三个问题,啊,我也不太懂,不过好像Zip()是用来返回各个可迭代参数共同组成的元祖

第四个问题。你不单独存放那岂不是文件的内容挤在一个文件了,
它就是创建4个文件,把每个对应的文件的内容放到里面,
至于代码嘛,只能自己多敲多看才能懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-23 17:26:14 | 显示全部楼层
为什么看着小龟龟的代码都好复杂啊,这是我的,,,,,
  1. import bs4
  2. import requests
  3. import json

  4. def get_url(url):
  5.     res = requests.get(url)
  6.     res = requests.get(url).text
  7.    
  8.     soup = bs4.BeautifulSoup(res,"html.parser")
  9.    
  10.     titles = soup.find_all("li",class_="video-item matrix")
  11.     b = ""
  12.     for i in titles:
  13.         b += "视频名字:" + i.a["title"] + "---->" # 视频名字
  14.         #print(i.a["title"])
  15.         
  16.         b += "视频地址:"+ i.a["href"][2:] + "---->" # 视频连接
  17.         #print(i.a["href"][2:])

  18.         b += "时长:" + i.find_all("span")[0].text.strip() + "---->" # 视频时长
  19.         #print(i.find_all("span")[0].text.strip())

  20.         b += "标签:" + i.find_all("span")[2].text.strip() + "---->"
  21.         #print(i.find_all("span")[2].text.strip())

  22.         b += "播放数量:" + i.find_all("span")[3].text.strip() + "---->"
  23.         #print(i.find_all("span")[3].text.strip())

  24.         b += "弹幕数量:" + i.find_all("span")[4].text.strip() + "---->"
  25.         #print(i.find_all("span")[4].text.strip())

  26.         b += "上传时间:" + i.find_all("span")[5].text.strip() + "---->"
  27.         #print(i.find_all("span")[5].text.strip())

  28.         b += "up主名字:" + i.find_all("span")[6].text.strip() + "\n\n\n"
  29.         #print(i.find_all("span")[6].text.strip())


  30.     return b
  31.    


  32. def main():
  33.     key = input("请输入要搜索的关键词:")
  34.     yeshu = int(input("请输入要搜索多少页(请输入整数):"))
  35.     conut = 0
  36.     name_1 = ["最多点击","最新发布","最多弹幕","最多收藏"]
  37.     name = ["&order=click&duration=4&tids_1=0","&order=pubdate&duration=4&tids_1=0","&order=dm&duration=4&tids_1=0","&order=stow&duration=4&tids_1=0"]
  38.     # 注意for 循环用来迭代的对象名不要重复名了
  39.     for i in range(1,yeshu+1):  # 因为range从0开始的话会网页错误,所有开头为1
  40.         print("正在爬取中............当前第%d页"%i)
  41.         for j in name_1:
  42.             
  43.             url = "https://search.bilibili.com/all?keyword=%s%s&page=%s"%(key,name[conut],i)
  44.             b = get_url(url)
  45.             with open("%s.txt"%j,"a",encoding = "utf-8") as f:
  46.                 for each in b:
  47.                     f.write(each)
  48.             conut +=1
  49.         
  50.         conut = 0 # 变量返回为0,用来查列表下标
  51.     print("程序结束")
  52.         
  53. if __name__ == "__main__":
  54.     main()
  55. # i.find_all("span")[0~6].text.strip()
  56. # 根据要求查找1234567个下标的内容
  57. """ 下标0 = 时长
  58.     下标1 = 无
  59.     下标2 = 搜索标签?
  60.     下标3 = 观看数量
  61.     下标4 = 弹幕数量
  62.     下标5 = 上传时间
  63.     下标6 = up主名字
  64. """
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2020-11-11 10:57:15 | 显示全部楼层
dd
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-17 21:50:35 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-2 23:14:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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