AproScrape:硬verapro.hu网页抓取利器

需积分: 9 0 下载量 72 浏览量 更新于2024-12-11 收藏 972KB ZIP 举报
资源摘要信息:"apro-scrape是一款专为hardverapro.hu网站定制的免费开源网络抓取工具,它能够定时检查并及时发现网站上更新的新商品,并通过通知功能提醒用户以便快速与卖家取得联系。该工具支持多平台安装,包括Windows、Linux和OSX操作系统,其使用方法简便,用户只需通过浏览器搜索感兴趣的项目,复制URL,并在AproScrape应用中粘贴即可开始监控。" 从标题和描述中,我们可以提取以下知识点: 1. **网页抓取工具的定义和作用**:网页抓取工具(Web Crawler),又称为网络蜘蛛(Web Spider)、网络机器人(Web Bot),是一种自动化软件,用于浏览互联网以检索、索引或收集信息。AproScrape作为一种网页抓取工具,它的主要功能是在指定网站上寻找并抓取用户感兴趣的商品信息,并在商品信息更新时及时通知用户。 2. **AproScrape的特点**: - **即时性**:AproScrape能够24/7全天候监控hardverapro.hu网站,一旦有新商品上架,用户能够立即得到通知。 - **个性化搜索**:用户可以根据自身需求设置搜索选项,如示例中提到的只查看来自特定地区(布达佩斯)的项目。 - **跨平台操作**:安装程序适用于主流操作系统,包括Windows、Linux和OSX,满足不同用户的使用需求。 - **用户友好的使用方式**:通过浏览器搜索感兴趣的项目并复制URL,然后在AproScrape中粘贴URL即可开始监控,操作简单易懂。 3. **开源软件的定义**:AproScrape是开源的,这意味着它的源代码是开放的,允许任何用户查看、修改和共享。开源项目通常由社区支持,允许开发者协作改进工具,提高其性能和安全性。 4. **相关技术栈**: - **Electron框架**:AproScrape使用Electron框架开发,这是一个允许使用JavaScript, HTML 和 CSS等网页技术来创建跨平台的桌面应用程序的技术。Electron 通过Chromium和Node.js集成,让开发者能够构建出同时兼容Windows、Linux和OSX的操作系统。 - **Vue.js框架**:虽然描述中没有直接提到Vue.js,但标签中包括了vue,这表明AproScrape可能使用Vue.js作为前端的框架。Vue.js是一种渐进式JavaScript框架,用于构建用户界面,以其易用性和灵活性在前端开发中受到广泛欢迎。 - **JavaScript语言**:AproScrape作为网页抓取工具,其核心功能开发很可能依赖于JavaScript语言。JavaScript是实现网页交互功能和构建动态网页的关键技术。 5. **文件名列表中"apro-scrape-master"的含义**:"master"通常指代代码仓库中的主分支(main branch),在这个上下文中,"apro-scrape-master"可能是一个源代码压缩包的名称,代表了AproScrape项目的主分支代码。用户可以通过下载这个压缩包来安装和使用AproScrape工具。 6. **网络抓取的道德和法律问题**:在使用网页抓取工具时,应当遵守相关网站的使用条款以及相关国家的法律法规。网络抓取可能会引起数据隐私、版权和使用权限等问题。因此,AproScrape在进行数据抓取时应确保其行为合法合规,并尊重目标网站的数据使用政策。 综上所述,AproScrape是一个功能强大的网页抓取工具,能够在目标网站上寻找并及时通知用户新商品信息。它基于开源技术开发,支持多平台运行,并且使用起来简便快捷。同时,它背后的技术栈包括Electron、Vue.js和JavaScript,使其成为一个现代化的跨平台应用程序。

start_time = time.time() othercon = 'Profile_Time >= "{}" and Profile_Time <"{}" and high_level > 338'.format(desday,tom_dt.strftime('%Y-%m-%d')) # apro_df 是[latitude,longitude,time,high_level,features]的格式,但是高度还没有std apro_ori, apro_df, apro_xr = get_apro_data_sql(con, apro_config, othercon, pos_merge=pos_df, multi_index=multi_index + ['high_level']) print('THE COST to get raw data table:',time.strftime("%H: %M: %S",time.gmtime(time.time() - start_time))) # TODO: 可能查不到数据,判断一下 if apro_df.shape[0] == 0: # 修改列名即可 apro_final_df = apro_df apro_final_df.rename(columns={'high_level':'Level'},inplace=True) print('THE {} DAY HAS NO APRO DATA'.format(desday)) else: # 高度标准化 apro_df['Level'] = apro_df.apply(apro_get_level, axis=1) apro_df = apro_df.drop(['high_level'], axis=1) apro_xr = apro_df.set_index(['Time', 'Latitude', 'Longitude', 'Level']).to_xarray() # 插值等 # 2. 插值 _, _, times, tlabels = get_apro_interp_attr(apro_xr, std_index_3d, desday,posrange) # 时间 apro_mean_xr = apro_xr.groupby_bins('Time', bins=times, labels=tlabels).mean('Time').rename( {'Time_bins': 'Time'}) # 位置 apro_mean_xr['Latitude'] = apro_mean_xr.Latitude.values.round(1) apro_mean_xr['Longitude'] = apro_mean_xr.Longitude.values.round(1) apro_mean_df = apro_mean_xr.to_dataframe().dropna(how='all').reset_index() # 最后 apro_final_df = apro_mean_df.groupby(['Time', 'Latitude', 'Longitude', 'Level']).mean().dropna(how='all') # apro_final_xr = apro_final_df.to_xarray() apro_final_df = apro_final_df.reset_index() # 修改时间 apro_final_df.Time = pd.to_datetime(apro_final_df['Time']) apro_final_df.Time = apro_final_df['Time'].apply(lambda x:x.replace(year=2023)) # Todo: 可以改成输入的年份 # 输出中间文件,可能是空文件 desday = desday.replace('2017','2023') outfile = os.path.join(apro_config.outpath,"apro_mid_{}.csv".format(desday)) apro_final_df.to_csv(outfile,index=False)

172 浏览量