实验二:Huggingface数据集页面遍历爬取

准备:

获取所有的标签和链接,并存储在json文件中

main.py

from bs4 import BeautifulSoup
import requests
import extract
import Into_Tag
import read
import json
def get_info(filepath):try:with open(filepath,'r',encoding='utf-8')as file:content=file.read()except Exception as e:print(f"{e}")return content
#content=read.get_HTML()
def main(url):try:response=requests.get(url)content=response.textread.trace_web(content)except:print('WLAN Error')passreturndef clear_f(filename):with open(filename,'w',encoding='utf-8')as file:passdef store_tag(content):all_tag = read.trace_web(content)with open(Tag_file, 'w', encoding='utf-8') as file:for data in all_tag:json.dump(data, file)file.write('\n')returnfp = r"E:\Procedure\Python\Experiment\webpage.txt"
url='https://huggingface.co/datasets'
Tag_file=r'E:\Procedure\Python\Experiment\url_queue.json'f=r"E:\Procedure\Python\Experiment\memo.json"print('Succeed')
工具函数定义:

read.py

import requests
from bs4 import BeautifulSoup
import Into_Tagdef get_HTML():web='https://huggingface.co/datasets'try:response=requests.get(web,timeout=30)source_path=r"E:\Procedure\Python\Experiment\webpage.txt"with open(source_path,'w',encoding='utf-8')as file:file.write(response.text)return response.textexcept:return Nonedef trace_web(content):soup=BeautifulSoup(content,'html.parser')tag_divs = soup.find_all('div', class_='mb-3')all_tag=[]for tag_div in tag_divs:# 提取标签文本try:tag_text = tag_div.find('div', class_='mb-3 text-sm font-medium text-gray-500').get_text(strip=True)"""print("标签:", tag_text)"""# 提取小标签及其链接small_tags = tag_div.find_all('a', class_='tag tag-white')for small_tag_element in small_tags:try:small_tag_text = small_tag_element.span.get_text(strip=True)small_tag_link = small_tag_element['href']print("小标签:", small_tag_text)print("小标签链接:", small_tag_link)all_tag.append({'link':small_tag_link,'mainclass':tag_text,'subclass':small_tag_text})except AttributeError as e:continueprint("-" * 50)except AttributeError as e:continuereturn all_tag

开始爬取:

Into_Tag.py

import requests
from bs4 import BeautifulSoup
import json
import extractbase='https://huggingface.co'
tbase='https://huggingface.co/datasets'
def obtain_url():filename=r"E:\Procedure\Python\Experiment\url_queue.json"url_list=[]try:with open(filename,'r')as file:for line in file:data=json.loads(line)url_list.append(data)except Exception as e:print('Did not read:',e)return url_list
def store_Web(result):filename = r"E:\Procedure\Python\Experiment\res1.json"if (result==None):returnprint(filename)with open(filename, 'a') as file:for data in result:json.dump(data, file)file.write('\n')returndef judge(links,tag,s_tag):filename=r"E:\Procedure\Python\Experiment\memo1.json"print(filename)dt = {}result=[]try:with open(filename, 'r') as file:dt = json.load(file)except FileNotFoundError as e:dt={}passexcept json.decoder.JSONDecodeError as e:dt={}passif links==None or len(links)==0:print("links is empty")returnfor lk in links:if lk==None:continuelink=lk.get('href')if link==None:continueif link in dt:continueelse:try:response=requests.get(base+link,timeout=20)content=response.textres=extract.extract_info(content,tag,s_tag)dt.update({link:0})result.append(res)except requests.exceptions.Timeout as e:print('Timeout while accessing:', base + link)continueexcept Exception as e:print('Error while accessing:', base + link, e)continuetry:with open(filename,'w')as file:json.dump(dt,file)print('memo')except Exception as e:print('false')passreturn resultdef get_page_num(soup):"""获取页面数量:param soup::return:"""li=soup.find_all('li',class_='hidden sm:block')if li==None or len(li)==0:return -1num=int(li[-1].text)return numdef one_by_one(url,mclass='',sclass=''):try:response=requests.get(base+url,timeout=10)except Exception as e:print(e)return Nonecontent=response.text#print(content)soup=BeautifulSoup(response.text,'html.parser')#links=soup.find_all('a',class_='block p-2')links=[]num=get_page_num(soup)if num==-1:return linksfor i in range(5,num):params={'p':i,'sort':'trending'}page_url=base+urltry:content=requests.get(page_url,params=params,timeout=10).texttsoup=BeautifulSoup(content,'html.parser')tlinks=tsoup.find_all('a',class_='block p-2')links+=tlinksexcept:continuereturn links
def trytorep():url = '/datasets?task_categories=task_categories%3Aimage-classification'links = one_by_one(url)res = judge(links, "Computer Vision", 'Image Classification')store_Web(res)
def back():url_list=obtain_url()sum=45for d in url_list[45:46]:link = d.get('link')mclass = d.get('mainclass')sclass = d.get('subclass')links = one_by_one(link)res = judge(links, mclass, sclass)store_Web(res)print(sum)sum+=1
def main():url_list = obtain_url()sum=5for d in url_list[5:6]:link = d.get('link')mclass = d.get('mainclass')sclass = d.get('subclass')links = one_by_one(link)res = judge(links, mclass, sclass)store_Web(res)print(sum)sum+=1def get_tag_size(url_list):print("tag_size:",len(url_list))d=url_list[5]mclass=d.get('mainclass')sclass=d.get('subclass')links=[{'href':'/datasets/CyberHarem/surtr_arknights?not-for-all-audiences=true'}]res=judge(links,mclass,sclass)#store_Web(res)returnurl_list=obtain_url()
get_tag_size(url_list)
注意点:

注意如何正确翻页

注意特殊页面需要在链接后面加上 “?not-for-all-audiences=true"  才可以访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/828087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

B端设计实战:基于角色属性的权限设计

编辑导读:“权限控制”是中后台的基础能力,用于管控操作人员在平台内可做的事项内容。即通过权限控制,可以决定哪些人在平台内可以做哪些事。本文作者围绕角色&属性的权限设计展开分析,希望对你有帮助。 Hello,我是一名交互设计师。 随着3月暖春的即将到来,苏州的疫…

Java设计模式中策略模式

策略模式是一种行为型设计模式,它允许在运行时选择算法的行为。这种模式定义了一系列算法,并使这些算法可以相互替换,使得算法的变化独立于使用算法的客户。 以下是策略模式的一般结构: Context(上下文)&a…

bugku-杂项-社工进阶收集

下载附件 得到图片 利用百度地图查找 这里得到地点名称大雁塔音乐喷泉 陕西省西安市,大雁塔北广场 打开高德地图 来到大雁塔北广场 因为在北广场,所以地铁站为大雁塔站 开始分析 坐七站到大雁塔站,即始发站为韦曲南站 因为始发站离她家800米&…

高频前端面试题汇总之HTML篇

1. src和href的区别 src和href都是用来引用外部的资源,它们的区别如下: src: 表示对资源的引用,它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应⽤到⽂档内,如请求js脚本。当浏览器解析到该元素…

34. BI - 美国大学生足球队的 GCN 案例

本文为 「茶桁的 AI 秘籍 - BI 篇 第 34 篇」 文章目录 美国大学生足球队 Embedding(GCN) Hi,你好。我是茶桁。 在上一节课中,因为需要,我们先是回顾了一下 Graph Embedding,然后跟大家讲解了 GCN 以及其算…

linux驱动-CCF-0基础

1. 时钟设备 晶振:提供基础时钟源的(可分为有源晶振、无源晶振两种); PLL: 用于倍频的锁相环; mux: 用于多路时钟源选择; Divider: 用于分频的; gate: 用于时钟使能的与门电路等 2. CCF…

Python读写文本URL蓝牙WIFI自动连接电子名片位置坐标智能海报等NDEF标签

本示例使用的发卡器:https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c.w4002-21818769070.11.60ad789erlonvk 近场通信(Near Field Communication,简称NFC),是一种新兴的技术&…

Python常见运算符

赋值运算符 赋值运算符主要用来对变量进行赋值,包括如下这些: 运算符 描述 赋值加等于 - 减等于 * 乘等于 / 除等于 // 整除等于 % 模等于 ** 幂等于实例如下: a 10 a 5 # 等价于 a a5 a *2 # 等价于 a a*2比较运算符 比较运算符主要用来比较两个数据的大小,包括如下这…

技术速递|Java on Azure Tooling 3月更新 - Java on Azure 开发工具未来六个月路线图发布

作者:Jialuo Gan - Program Manager, Developer Division At Microsoft 排版:Alan Wang 大家好,欢迎阅读 Java on Azure 工具的三月更新。在本次更新中,我们将分享未来几个月对 Java on Azure 开发工具的投资。此外,我…

ubuntu系统解决安装datahub时报错failed to register layer: error creating overlay mount

查了很多说禁用selinx和不使用overlay 以及删除overlay2文件夹的方法都没用 再次拉取的时候还是会报这个错误 编辑 Docker 配置文件: 打开 Docker 的配置文件,通常位于 /etc/docker/daemon.json。如果文件不存在,则可以创建一个新文件。…

Redis入门到通关之数据结构解析-Dict

文章目录 概述构成Dict的扩容Dict的rehash总结 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端开…

SpringBoot引入第三方jar包或本地jar包

idea2018创建spring boot项目 New Project窗口选择Spring Initializr Type选择Maven(Generate…),有两个Maven选择这一个。 勾选Spring Web。 pom.xml中version改成2.5.10。 在resources中新建jar目录,将第三方jar包fastjson2-2.0.47.jar放入其中。&#xff08…

国产FTP文件传输服务器需要具备哪些关键特性?

国产FTP文件传输服务器是指根据中国国内信息技术创新(信创)的要求和标准,自主研发的文件传输服务器软件。这类软件旨在替代传统的FTP服务器,以更好地适应国产化和信息安全的需要。国产FTP文件传输服务器通常需要具备以下要求&…

【ensp】网关冗余vrrp实验

基础文字知识复习时,添加,下文仅拓扑以及核心配置以及结果分析 冗余路由器 核心代码: int g0/0/0 [R1-GigabitEthernet0/0/0]vrrp vrid 1 virtual-ip 192.168.10.1 ###设置虚拟ip [R1-GigabitEthernet0/0/0]vrrp vrid 1 priority 120 …

零碳家庭 “光”的力量

有行业专家乐观预测,在供给充足、基础设施建设与时俱进的情况下,2025年,我国新能源汽车市场的占有率将会达到50%,2030年更有望突破90%的大关。为了方便新能源汽车的出行,在家中安装一个智能充电桩是越来越多驾驶者的选…

常见的加密方式都有哪些

加密方式有多种类型,包括对称加密、非对称加密和哈希函数。以下是它们的主要类型: 对称加密: 对称加密使用相同的密钥进行加密和解密。常见的对称加密算法包括:DES、3DES、AES、RC4 等。 非对称加密: 非对称加密使用一…

【Python】如何使用Pandas进行数据探索:计算描述性统计量和空值率

我等待的是不再等待的那份自由 不应该把我情愿的当作应该 风吹干了衣裳汗的痕迹是我的勋章 我等待的是不再等待的那份自由 你问我要走最远的路 是从哪到哪 渴望遇见什么人 我还是重复着每一天 但从不辜负 清尘收露 最美的夜色 留给努力活着 赶路的人 想回家的每一刻 迈的脚步有…

【系统架构师】-选择题(二)

1、面向服务(Service-Oriented,SO)的开发方法将(接口)的定义与实现进行解耦,并将跨构件的功能调用暴露出来。该方法有三个主要的抽象级别,最低层的(操作)代表单个逻辑单元…

学习STM32第十八天

RTC外设详解 一、RTC实时时钟实验 RTC配置流程如下 解锁备份域写保护 RTC核心寄存器在备份域内,备份域归属PWR,因此需要开启PWR时钟再使能备份与中寄存器的写访问。 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //电源控制寄存器在APB1…

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测 目录 分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.RIME-BP霜冰优化BP神经网络多特征分类预测(Matlab实现完整源码和数据&a…