首页 文章 精选 留言 我的

精选列表

搜索[代码生成],共10000篇文章
优秀的个人博客,低调大师

Python微博移动端爬虫实例(附代码

本文简要讲述用Python爬取微博移动端数据的方法。可以看一下Robots协议。另外尽量不要爬取太快。如果你毫无节制的去爬取别人数据,别人网站当然会反爬越来越严厉。至于为什么不爬PC端,原因是移动端较简单,很适合爬虫新手入门。有时间再写PC端吧! 环境介绍 Python3/Windows-10-64位/微博移动端 网页分析 以获取评论信息为例(你可以以自己的喜好获得其他数据)。如下图: 在这里就会涉及到一个动态加载的概念,也就是我们只有向下滑动鼠标滚轮才会加载出更多的评论数据。这也是网页经常使用的方式。接下来就应该找到评论信息的真实网址,找到真实网址的方法就是打开浏览器的开发者工具,火狐/谷歌是F12键。打开如下: 打开以后点击网络,网络用来记录浏览器和服务器交换的信息。接下来将鼠标滚轮缓慢向下滚动,在这个过程中就会弹出类似于上图的信息,也就

优秀的个人博客,低调大师

附Python和R代码

前言 谷歌董事长施密特曾说过:虽然谷歌的无人驾驶汽车和机器人受到了许多媒体关注,但是这家公司真正的未来在于机器学习,一种让计算机更聪明、更个性化的技术。 也许我们生活在人类历史上最关键的时期:从使用大型计算机,到个人电脑,再到现在的云计算。关键的不是过去发生了什么,而是将来会有什么发生。 工具和技术的民主化,让像我这样的人对这个时期兴奋不已。计算的蓬勃发展也是一样。如今,作为一名数据科学家,用复杂的算法建立数据处理机器一小时能赚到好几美金。但能做到这个程度可并不简单!我也曾有过无数黑暗的日日夜夜。 谁能从这篇指南里受益最多? 这篇指南的目的,是为那些有追求的数据科学家和机器学习狂热者们,简化学习旅途。这篇指南会让你动手解决机器学习的问题,并从实践中获得真知。我提供的是几个机器学习算法的高水平理解,以及运行这些算法的 R 和 Python 代

优秀的个人博客,低调大师

android141 360 安装软件管理java代码

AppManagerActivity package com.itheima52.mobilesafe.activity; import android.app.Activity; import android.appwidget.AppWidgetProvider; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageInfo; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.text.format.Formatter; import android.view.Gravity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.ScaleAnimation; import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AlphabetIndexer; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView; import com.itheima52.mobilesafe.R; import com.itheima52.mobilesafe.bean.AppInfo; import com.itheima52.mobilesafe.engine.AppInfos; import com.lidroid.xutils.ViewUtils; import com.lidroid.xutils.view.annotation.ViewInject; import org.w3c.dom.Text; import java.util.ArrayList; import java.util.List; public class AppManagerActivity extends Activity implements View.OnClickListener { @ViewInject(R.id.list_view)//不用findViewById() private ListView listView; @ViewInject(R.id.tv_rom) private TextView tv_rom; @ViewInject(R.id.tv_sd) private TextView tv_sd; private List<AppInfo> appInfos; private List<AppInfo> userAppInfos; private List<AppInfo> systemAppInfos; @ViewInject(R.id.tv_app) private TextView tv_app;//滑动时候停留不动的部分 private PopupWindow popupWindow;//卸载分享详情 小的弹出层 private AppInfo clickAppInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initUI(); initData(); } @Override public void onClick(View v) { switch (v.getId()) { //分享,发送短信给别人 case R.id.ll_share: Intent share_localIntent = new Intent("android.intent.action.SEND"); share_localIntent.setType("text/plain"); share_localIntent.putExtra("android.intent.extra.SUBJECT", "f分享"); share_localIntent.putExtra("android.intent.extra.TEXT", "Hi!推荐您使用软件:" + clickAppInfo.getApkName()+"下载地址:"+"https://play.google.com/store/apps/details?id="+clickAppInfo.getApkPackageName()); this.startActivity(Intent.createChooser(share_localIntent, "分享")); popupWindowDismiss(); break; //运行 case R.id.ll_start: Intent start_localIntent = this.getPackageManager().getLaunchIntentForPackage(clickAppInfo.getApkPackageName()); this.startActivity(start_localIntent); popupWindowDismiss(); break; //卸载 case R.id.ll_uninstall: Intent uninstall_localIntent = new Intent("android.intent.action.DELETE", Uri.parse("package:" + clickAppInfo.getApkPackageName())); startActivity(uninstall_localIntent); popupWindowDismiss(); break; case R.id.ll_detail: Intent detail_intent = new Intent(); detail_intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); detail_intent.addCategory(Intent.CATEGORY_DEFAULT); detail_intent.setData(Uri.parse("package:" + clickAppInfo.getApkPackageName())); startActivity(detail_intent); break; } } private class AppManagerAdapter extends BaseAdapter { @Override public int getCount() { return userAppInfos.size() + 1 + systemAppInfos.size() + 1; } @Override public Object getItem(int position) { if (position == 0) { return null; } else if (position == userAppInfos.size() + 1) { return null; } AppInfo appInfo; if (position < userAppInfos.size() + 1) { //把多出来的特殊的条目减掉 appInfo = userAppInfos.get(position - 1); } else { int location = userAppInfos.size() + 2; appInfo = systemAppInfos.get(position - location); } return appInfo; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { //如果当前的position等于0 表示应用程序 if (position == 0) { TextView textView = new TextView(AppManagerActivity.this); textView.setTextColor(Color.WHITE); textView.setBackgroundColor(Color.GRAY); textView.setText("用户程序(" + userAppInfos.size() + ")"); return textView; //表示系统程序 } else if (position == userAppInfos.size() + 1) { TextView textView = new TextView(AppManagerActivity.this); textView.setTextColor(Color.WHITE); textView.setBackgroundColor(Color.GRAY); textView.setText("系统程序(" + systemAppInfos.size() + ")"); return textView; } AppInfo appInfo; if (position < userAppInfos.size() + 1) { //把多出来的特殊的条目减掉 appInfo = userAppInfos.get(position - 1); } else { int location = userAppInfos.size() + 2; appInfo = systemAppInfos.get(position - location); } View view = null; ViewHolder holder; //item_app_manager是一个LinearLayout,但是"用户程序"和"系统程序"不是LinearLayout也会被复用所以要判断。 if (convertView != null && convertView instanceof LinearLayout) { view = convertView; holder = (ViewHolder) view.getTag(); } else { view = View.inflate(AppManagerActivity.this, R.layout.item_app_manager, null); holder = new ViewHolder(); holder.iv_icon = (ImageView) view.findViewById(R.id.iv_icon); holder.tv_apk_size = (TextView) view.findViewById(R.id.tv_apk_size); holder.tv_location = (TextView) view.findViewById(R.id.tv_location); holder.tv_name = (TextView) view.findViewById(R.id.tv_name); view.setTag(holder); } holder.iv_icon.setImageDrawable(appInfo.getIcon()); holder.tv_apk_size.setText(Formatter.formatFileSize(AppManagerActivity.this, appInfo.getApkSize())); holder.tv_name.setText(appInfo.getApkName()); if (appInfo.isRom()) { holder.tv_location.setText("手机内存"); } else { holder.tv_location.setText("外部存储"); } return view; } } static class ViewHolder { ImageView iv_icon; TextView tv_apk_size; TextView tv_location; TextView tv_name; } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { AppManagerAdapter adapter = new AppManagerAdapter(); listView.setAdapter(adapter);//getView方法就开始调用了 } }; private void initData() { new Thread() { @Override public void run() {//耗时操作 //获取到所有安装到手机上面的应用程序 appInfos = AppInfos.getAppInfos(AppManagerActivity.this); //appInfos拆成 用户程序的集合 + 系统程序的集合 //用户程序的集合 userAppInfos = new ArrayList<AppInfo>(); //系统程序的集合 systemAppInfos = new ArrayList<AppInfo>(); for (AppInfo appInfo : appInfos) { //用户程序 if (appInfo.isUserApp()) { userAppInfos.add(appInfo); } else { systemAppInfos.add(appInfo); } } handler.sendEmptyMessage(0);//更新界面用消息机制 } }.start(); } private void initUI() { setContentView(R.layout.activity_app_manager); ViewUtils.inject(this); //获取到rom内存的运行的剩余空间 long rom_freeSpace = Environment.getDataDirectory().getFreeSpace(); //获取到SD卡的剩余空间 long sd_freeSpace = Environment.getExternalStorageDirectory().getFreeSpace(); System.out.println("内存可用:" + rom_freeSpace); System.out.println("sd卡可用:" + sd_freeSpace); //格式化大小 tv_rom.setText("内存可用:" + Formatter.formatFileSize(this, rom_freeSpace)); tv_sd.setText("sd卡可用" + Formatter.formatFileSize(this, sd_freeSpace)); //接受卸载的广播 UninstallReceiver receiver = new UninstallReceiver(); IntentFilter intentFilter = new IntentFilter(Intent.ACTION_PACKAGE_REMOVED); intentFilter.addDataScheme("package");//数据类型 registerReceiver(receiver, intentFilter); //设置listview的滚动监听 listView.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } /** * @param view * @param firstVisibleItem 第一个可见的条的位置 * @param visibleItemCount 一页可以展示多少个条目 * @param totalItemCount 总共的item的个数 */ @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { popupWindowDismiss(); if (userAppInfos != null && systemAppInfos != null) { if (firstVisibleItem > (userAppInfos.size() + 1)) { //系统应用程序 tv_app.setText("系统程序(" + systemAppInfos.size() + ")个"); } else { //用户应用程序 tv_app.setText("用户程序(" + userAppInfos.size() + ")个"); } } } }); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //获取到当前点击的item对象 Object obj = listView.getItemAtPosition(position); if (obj != null && obj instanceof AppInfo) { clickAppInfo = (AppInfo) obj; View contentView = View.inflate(AppManagerActivity.this, R.layout.item_popup, null); LinearLayout ll_uninstall = (LinearLayout) contentView.findViewById(R.id.ll_uninstall); LinearLayout ll_share = (LinearLayout) contentView.findViewById(R.id.ll_share); LinearLayout ll_start = (LinearLayout) contentView.findViewById(R.id.ll_start); LinearLayout ll_detail = (LinearLayout) contentView.findViewById(R.id.ll_detail); ll_uninstall.setOnClickListener(AppManagerActivity.this); ll_share.setOnClickListener(AppManagerActivity.this); ll_start.setOnClickListener(AppManagerActivity.this); ll_detail.setOnClickListener(AppManagerActivity.this); //消除之前的PopupWindow popupWindowDismiss(); // -2表示包裹内容 popupWindow = new PopupWindow(contentView, -2, -2); //需要注意:使用PopupWindow 必须设置背景。不然没有动画 popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //数组是2个长度,一个是x一个是y int[] location = new int[2]; //获取view展示到窗体上面的位置 view.getLocationInWindow(location); //70是距离x轴的距离,location[1]是距离y轴的距离。 popupWindow.showAtLocation(parent, Gravity.LEFT + Gravity.TOP, 70, location[1]); //慢慢出现的动画 ScaleAnimation sa = new ScaleAnimation(0.5f, 1.0f, 0.5f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); sa.setDuration(3000); contentView.startAnimation(sa); } } }); } private class UninstallReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { System.out.println("接收到卸载的广播"); } } private void popupWindowDismiss() { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); popupWindow = null; } } @Override protected void onDestroy() { popupWindowDismiss(); super.onDestroy(); } } AppInfos: package com.itheima52.mobilesafe.engine; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import com.itheima52.mobilesafe.bean.AppInfo; import java.io.File; import java.util.ArrayList; import java.util.List; public class AppInfos { public static List<AppInfo> getAppInfos(Context context){ /*public class AppInfo { private Drawable icon;//图片的icon private String apkName;//程序的名字 private long apkSize;//程序大小 private boolean userApp;//true 就是用户app,false表示系统app(系统应用在system/app下,普通应用在data/data/app下) private boolean isRom;//放置的位置 private String apkPackageName;//包名 */ List<AppInfo> packageAppInfos = new ArrayList<AppInfo>(); //获取到包的管理者,安卓系统里面所有的应用程序都是通过包进行管理的。 PackageManager packageManager = context.getPackageManager(); //获取到整个手机上面所有的安装包 List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0); for (PackageInfo installedPackage : installedPackages) { AppInfo appInfo = new AppInfo(); //获取到应用程序的图标(不用BitMap),installedPackage是包, //applicationInfo是获取清单文件中的application节点,loadIcon是获取application节点下的icon属性。 Drawable drawable = installedPackage.applicationInfo.loadIcon(packageManager); appInfo.setIcon(drawable); //获取到应用程序的名字 String apkName = installedPackage.applicationInfo.loadLabel(packageManager).toString(); appInfo.setApkName(apkName); //获取到应用程序的包名 String packageName = installedPackage.packageName; appInfo.setApkPackageName(packageName); //获取到apk资源的路径 String sourceDir = installedPackage.applicationInfo.sourceDir; File file = new File(sourceDir); //apk的长度 long apkSize = file.length(); appInfo.setApkSize(apkSize); System.out.println("---------------------------"); System.out.println("程序的名字:" + apkName); System.out.println("程序的包名:" + packageName); System.out.println("程序的大小:" + apkSize); //获取到安装应用程序的标记 int flags = installedPackage.applicationInfo.flags; if((flags & ApplicationInfo.FLAG_SYSTEM) !=0 ){//二进制与 //表示系统app appInfo.setUserApp(false); }else{ //表示用户app appInfo.setUserApp(true); } if((flags& ApplicationInfo.FLAG_EXTERNAL_STORAGE) !=0 ){ //表示在sd卡 appInfo.setRom(false); }else{ //表示内存 appInfo.setRom(true); } packageAppInfos.add(appInfo); } return packageAppInfos; } } 本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5137721.html,如需转载请自行联系原作者

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册