-
parse下载内容不报错但是抓不下来数据,显示列表为空
2020-04-01 08:47:26parse下载内容不报错但是抓不下来数据,列表为空,不知道是哪儿原因 import requests from lxml import etree import random import time from urllib import parse class TiebaImageSpider(object): def init(self)...parse下载内容不报错但是抓不下来数据,列表为空,不知道是哪儿原因
import requests
from lxml import etree
import random
import time
from urllib import parseclass TiebaImageSpider(object):
def init(self):
self.url = “http://tieba.baidu.com/f?kw={}&pn={}”
self.headers = {
‘User-Agent’: ‘Mozilla/5.0(Windows NT 6.1; WOW64)AppleWebKit/535.1(KHTML, like Gecko)Chrome/14.0.835.163 Safari/535.1’}# 功能函数,获取html def get_html(self, url): res = requests.get(url=url, headers=self.headers) html = res.content return html # 功能函数,解析 def xpath_func(self, html, xpath_bds): parse_obj = etree.HTML(html) # print(parse_obj) r_list = parse_obj.xpath(xpath_bds) # print(r_list) return r_list # 做事情 def parse_html(self, url): # 1.先提取帖子链接 one_html = self.get_html(url).decode() xpath_bds = '//div[@class="t_con cleafix"]/div/div/div/a/@href' tlink_list = self.xpath_func(one_html, xpath_bds) # print(tlink_list) # for 遍历 for tlink in tlink_list: tlink = "http://tieba.baidu.com" + tlink self.get_image(tlink) # 像帖子发请求+提取图片链接+像图片发请求+保存图片 def get_image(self, tilnk): html = self.get_html(tilnk).decode() xpath_bds = '//li/div/div/div/div/img[@class="j_retract"]/@src' # //div[@class="d_post_content j_d_post_contenclearfix"]/img[@class["BDE_Image"]/@src img_link_list = self.xpath_func(html, xpath_bds) for img_link in img_link_list: # 保存图片 self.save_image(img_link) def save_image(self, img_link): html = self.get_html(img_link) filename = img_link[-10:] with open(filename, 'wb') as f: f.write(html) print(filename, '下载成功') def run(self): name = input('贴吧名:') start = int(input('起始页:')) end = int(input('终止页:')) name = parse.quote(name) for page in range(start, end + 1): pn = (page - 1) * 50 url = self.url.format(name, pn) self.parse_html(url) # print(self.parse_html(url))
if name == ‘main’:
spider = TiebaImageSpider()
spider.run() -
okhttputils显示下载进度
2017-12-10 10:30:27//download the new appprivate void downLoadNewApp(NewVersion.XianzaishiRfBean version) { if (StringUtils.isEmpty(version.getUrl())) { ToastUtils.showToast("新版本的APP url为空");//download the new appprivate void downLoadNewApp(NewVersion.XianzaishiRfBean version) { if (StringUtils.isEmpty(version.getUrl())) { ToastUtils.showToast("新版本的APP url为空"); enterLoginActivity(); return; } final ProgressDialog dialog = new ProgressDialog(this); dialog.setTitle("正在下载"); dialog.setMessage(version.getDes() + ""); dialog.setCancelable(false); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.show(); if (!NetUtils.hasNet(SplashActivity.this)) { ToastUtils.showToast("请检查网络环境"); return; } System.out.println("SplashActivity.downLoadNewApp=" + version.getUrl()); OkHttpUtils .get() .url(version.getUrl()) .build() .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), Conts.NEW_APP_NAME) { @Overridepublic void onError(Call call, Exception e, int id) { enterLoginActivity(); System.out.println("SplashActivity.onError=哈哈哈"); ToastUtils.showToast("下载更新包失败"); } @Overridepublic void inProgress(float progress, long total, int id) { super.inProgress(progress, total, id); dialog.setProgress((int) (100 * progress)); } @Overridepublic void onResponse(File response, int id) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setDataAndType(Uri.fromFile(response), "application/vnd.android.package-archive"); startActivityForResult(intent, 0); } }); }
-
Android okhttputils显示下载进度
2016-12-14 15:52:16//download the new app private void downLoadNewApp(NewVersion.XianzaishiRfBean version) { if (StringUtils.isEmpty(version.getUrl())) { ToastUtils.showToast("新版本的APP url为空");//download the new app private void downLoadNewApp(NewVersion.XianzaishiRfBean version) { if (StringUtils.isEmpty(version.getUrl())) { ToastUtils.showToast("新版本的APP url为空"); enterLoginActivity(); return; } final ProgressDialog dialog = new ProgressDialog(this); dialog.setTitle("正在下载"); dialog.setMessage(version.getDes() + ""); dialog.setCancelable(false); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.show(); if (!NetUtils.hasNet(SplashActivity.this)) { ToastUtils.showToast("请检查网络环境"); return; } System.out.println("SplashActivity.downLoadNewApp=" + version.getUrl()); OkHttpUtils .get() .url(version.getUrl()) .build() .execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(), Conts.NEW_APP_NAME) { @Override public void onError(Call call, Exception e, int id) { enterLoginActivity(); System.out.println("SplashActivity.onError=哈哈哈"); ToastUtils.showToast("下载更新包失败"); } @Override public void inProgress(float progress, long total, int id) { super.inProgress(progress, total, id); dialog.setProgress((int) (100 * progress)); } @Override public void onResponse(File response, int id) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setDataAndType(Uri.fromFile(response), "application/vnd.android.package-archive"); startActivityForResult(intent, 0); } }); }
-
KindEditor 4.1.11 完整图片上传 表单提交Demo 解决js提交为空的问题
2019-05-10 15:48:352、图片上传完成后显示样式 由此可看到图片上传已完成,返回的是图片URL 3、提交后控制台输出 ============================分割线===================================== 1、下载KindEditor 首先下载...首先上效果图
1、编辑页面
2、图片上传完成后显示样式
由此可看到图片上传已完成,返回的是图片URL
3、提交后控制台输出
============================分割线=====================================
1、下载KindEditor
首先下载KindEditor,在此版本为4.1.11,点击下载
2、新建项目
使用idea新建SpringBoot项目,不做过多叙述。
3、导入KindEditor
所需文件及文件夹如下:
4、新建html页面
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>添加文章</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="jquery.min.js"></script> <script charset="utf-8" src="editor/kindeditor-all-min.js"></script> <script charset="utf-8" src="editor/lang/zh-CN.js"></script> </head> <body> <div style="margin-left: 20px"> 文章题目:<input class="form-control" id="title" style="width: 500px"/><br> <textarea name="content" class="common-textarea" id="content" style="width:100%; height:380px;visibility:hidden;"></textarea> <a onclick="sub()" class="btn btn-primary">提交</a> </div> <script type="text/javascript"> KindEditor.ready(function (K) { var editor = KindEditor.create('textarea[name="content"]', { uploadJson: '/fileUpload', fileManagerJson: '/fileManager', allowFileManager: true, items: ['source', '|', 'undo', 'redo', '|', 'preview', 'template', 'cut', 'copy', 'paste', 'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright', 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript', 'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/', 'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold', 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image', 'multiimage', 'flash', 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak', 'anchor', 'link', 'unlink'], //编辑器失去焦点(blur)时执行的回调函数。 // =========必须要有========== afterBlur: function () { this.sync(); } }); }); function sub() { var html = $('#content').val(); var title = $('#title').val(); $.post("/add", {'content': html, 'title': title}, function (result) { alert("提交成功!"); }) } </script> </body> </html>
5、Controller管理
1)、图片上传
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST) @ResponseBody public Map<String, Object> fileUpload(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FileUploadException { ServletContext application = request.getSession().getServletContext(); // String savePath = application.getRealPath("/") + "/static/images/"; String savePath = "I:/img/"; // 文件保存目录URL String saveUrl = "http://localhost:8077/showImg?imgUrl="; // 定义允许上传的文件扩展名 HashMap<String, String> extMap = new HashMap<String, String>(); extMap.put("image", "gif,jpg,jpeg,png,bmp"); extMap.put("flash", "swf,flv"); extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"); // 最大文件大小 long maxSize = 1000000; response.setContentType("text/html; charset=UTF-8"); if (!ServletFileUpload.isMultipartContent(request)) { return getError("请选择文件。"); } // 检查目录 File uploadDir = new File(savePath); if (!uploadDir.isDirectory()) { uploadDir.mkdir(); } // 检查目录写权限 if (!uploadDir.canWrite()) { return getError("上传目录没有写权限。"); } String dirName = request.getParameter("dir"); if (dirName == null) { dirName = "image"; } if (!extMap.containsKey(dirName)) { return getError("目录名不正确。"); } // 创建文件夹 savePath += dirName + "/"; saveUrl += dirName + "/"; File saveDirFile = new File(savePath); if (!saveDirFile.exists()) { saveDirFile.mkdirs(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); String ymd = sdf.format(new Date()); savePath += ymd + "/"; saveUrl += ymd + "/"; File dirFile = new File(savePath); if (!dirFile.exists()) { dirFile.mkdirs(); } FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding("UTF-8"); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Iterator item = multipartRequest.getFileNames(); while (item.hasNext()) { String fileName = (String) item.next(); MultipartFile file = multipartRequest.getFile(fileName); // 检查文件大小 if (file.getSize() > maxSize) { return getError("上传文件大小超过限制。"); } // 检查扩展名 String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1).toLowerCase(); if (!Arrays.asList(extMap.get(dirName).split(",")).contains(fileExt)) { return getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"); } SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; try { File uploadedFile = new File(savePath, newFileName); ByteStreams.copy(file.getInputStream(), new FileOutputStream(uploadedFile)); } catch (Exception e) { return getError("上传文件失败。"); } Map<String, Object> msg = new HashMap<String, Object>(); msg.put("error", 0); msg.put("url", saveUrl + newFileName); return msg; } return null; }
2)、图片读取
@RequestMapping(value = "/showImg", method = RequestMethod.GET) public void ioReadImage(String imgUrl, HttpServletResponse response) throws IOException { ServletOutputStream out = null; FileInputStream ips = null; String upload = null; try { //获取图片存放路径 String imgPath = "I:/img" + "/" + imgUrl; ips = new FileInputStream(new File(imgPath)); String type = imgUrl.substring(imgUrl.indexOf(".") + 1); if ("png".equals(type)) { response.setContentType("image/png"); } if ("jpeg".equals(type)) { response.setContentType("image/jpeg"); } out = response.getOutputStream(); //读取文件流 int len = 0; byte[] buffer = new byte[1024 * 10]; while ((len = ips.read(buffer)) != -1) { out.write(buffer, 0, len); } out.flush(); } catch (Exception e) { e.printStackTrace(); } finally { out.close(); ips.close(); } }
3)、图片管理预览
@RequestMapping(value = "/fileManager", method = RequestMethod.GET) public void fileManager(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext application = request.getSession().getServletContext(); ServletOutputStream out = response.getOutputStream(); /*// 根目录路径,可以指定绝对路径,比如 /var/www/attached/ String rootPath = application.getRealPath("/") + "images/"; // 根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ String rootUrl = request.getContextPath() + "/images/";*/ String rootPath = "I:/img/"; String rootUrl = "http://localhost:8080/kindeditor/showImg?imgUrl="; // 图片扩展名 String[] fileTypes = new String[]{"gif", "jpg", "jpeg", "png", "bmp"}; String dirName = request.getParameter("dir"); if (dirName != null) { if (!Arrays.<String>asList( new String[]{"image", "flash", "media", "file"}) .contains(dirName)) { out.println("Invalid Directory name."); return; } rootPath += dirName + "/"; rootUrl += dirName + "/"; File saveDirFile = new File(rootPath); if (!saveDirFile.exists()) { saveDirFile.mkdirs(); } } // 根据path参数,设置各路径和URL String path = request.getParameter("path") != null ? request .getParameter("path") : ""; String currentPath = rootPath + path; String currentUrl = rootUrl + path; String currentDirPath = path; String moveupDirPath = ""; if (!"".equals(path)) { String str = currentDirPath.substring(0, currentDirPath.length() - 1); moveupDirPath = str.lastIndexOf("/") >= 0 ? str.substring(0, str.lastIndexOf("/") + 1) : ""; } // 排序形式,name or size or type String order = request.getParameter("order") != null ? request .getParameter("order").toLowerCase() : "name"; // 不允许使用..移动到上一级目录 if (path.indexOf("..") >= 0) { out.println("Access is not allowed."); return; } // 最后一个字符不是/ if (!"".equals(path) && !path.endsWith("/")) { out.println("Parameter is not valid."); return; } // 目录不存在或不是目录 File currentPathFile = new File(currentPath); if (!currentPathFile.isDirectory()) { out.println("Directory does not exist."); return; } // 遍历目录取的文件信息 List<Hashtable> fileList = new ArrayList<Hashtable>(); if (currentPathFile.listFiles() != null) { for (File file : currentPathFile.listFiles()) { Hashtable<String, Object> hash = new Hashtable<String, Object>(); String fileName = file.getName(); if (file.isDirectory()) { hash.put("is_dir", true); hash.put("has_file", (file.listFiles() != null)); hash.put("filesize", 0L); hash.put("is_photo", false); hash.put("filetype", ""); } else if (file.isFile()) { String fileExt = fileName.substring( fileName.lastIndexOf(".") + 1).toLowerCase(); hash.put("is_dir", false); hash.put("has_file", false); hash.put("filesize", file.length()); hash.put("is_photo", Arrays.<String>asList(fileTypes) .contains(fileExt)); hash.put("filetype", fileExt); } hash.put("filename", fileName); hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file .lastModified())); fileList.add(hash); } } if ("size".equals(order)) { Collections.sort(fileList, new SizeComparator()); } else if ("type".equals(order)) { Collections.sort(fileList, new TypeComparator()); } else { Collections.sort(fileList, new NameComparator()); } Map<String, Object> msg = new HashMap<String, Object>(); msg.put("moveup_dir_path", moveupDirPath); msg.put("current_dir_path", currentDirPath); msg.put("current_url", currentUrl); msg.put("total_count", fileList.size()); msg.put("file_list", fileList); response.setContentType("application/json; charset=UTF-8"); String msgStr = objectMapper.writeValueAsString(msg); out.println(msgStr); } class NameComparator implements Comparator { @Override public int compare(Object a, Object b) { Hashtable hashA = (Hashtable) a; Hashtable hashB = (Hashtable) b; if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) { return -1; } else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) { return 1; } else { return ((String) hashA.get("filename")) .compareTo((String) hashB.get("filename")); } } } class SizeComparator implements Comparator { @Override public int compare(Object a, Object b) { Hashtable hashA = (Hashtable) a; Hashtable hashB = (Hashtable) b; if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) { return -1; } else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) { return 1; } else { if (((Long) hashA.get("filesize")) > ((Long) hashB .get("filesize"))) { return 1; } else if (((Long) hashA.get("filesize")) < ((Long) hashB .get("filesize"))) { return -1; } else { return 0; } } } } class TypeComparator implements Comparator { @Override public int compare(Object a, Object b) { Hashtable hashA = (Hashtable) a; Hashtable hashB = (Hashtable) b; if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) { return -1; } else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) { return 1; } else { return ((String) hashA.get("filetype")) .compareTo((String) hashB.get("filetype")); } } }
4)、图片地址保存
@ResponseBody @PostMapping(value = "add") public void add(String content, String title){ System.out.println("标题" + title + ", 内容" + content); }
=====================================分割线=============================================
Demo下载地址:https://download.csdn.net/download/zgsdzczh/11170980
-
Flash播放类 大家下载吧
2011-04-24 17:47:09参数 新顶边, 整数型, 可空, 不留空为设定,留空为取。 .子程序 窗口_高度, 整数型, 公开, 设定或取得Flash窗口相对于父窗口的高度。 .参数 新高度, 整数型, 可空, 不留空为设定,留空为取。 .子程序 窗口_挂接... -
Simple Down 简单下载系统 v6.2.zip
2019-07-06 12:30:58//伪静态地址后缀 正确格式: .html .php .htm 或者为空 4 上传所有文件到服务器。 升级: 升级前请先备份你的数据库。 这一次我将数据库的表名和字段名全部修改为小写。新增一个下载记录表和几个字段。 1 ... -
待抓取页面的列表,如果这个列表不为空,则抓取这个列表,忽略url和link base: String(可空) 链接的前缀 title: String 文章页面的标题选择器 content: String 文章页面的内容选择器 remove: String(可空...
-
允许在上传/下载开始之后继续添加新的listener
2020-12-01 18:36:58如果根据url获取到的listeners为null,会put进去一个空的List并传给ProgressRequestBody/ProgressResponseBody。</p><p>该提问来源于开源项目:JessYanCoding/ProgressManager</p></div> -
飞奔浏览器官方下载 v5.0.1.zip
2019-07-17 03:13:38前提是当播放列表存在歌曲且不为空的情况下. CTRL ALT O:开始播放歌曲. CTRL ALT S:停止播放歌曲. CTRL ALT P:播放上一首歌曲. CTRL ALT N:播放下一首歌曲. 标签自定义长度(config.ini->[RunData]->TabWidth=... -
ASP经典下载系统Downplus v2.2 MSSQL商业版.zip
2019-07-09 13:50:21自定义字段功能,可设置字段表单的形式,如单行、多行文本,单选、多选按钮,单行、多行下拉,隐藏等,可指定默认值,值为空时是否用默认值代替,可设置字段是否可采集,是否在编辑界面隐藏等. 前台全部生成静态页面,前台... -
jar放在Ubuntu下运行,但是在windows下访问web下载文件出现两次下载
2021-01-12 16:37:55// 如果文件名不为空,则进行下载 if (fileName != null) { //设置文件路径 String realPath = "upload/excel/"; //服务器路径 File file = new File(realPath, fileName); System.... -
700个批处理打包下载.rar
2013-08-12 17:45:52显示所有分区的剩余空间(以MB为单位).cmd 显示本机用户帐号信息.cmd 显示某两个字符及其之间的字符.cmd 显示用户名.bat 显示磁盘分区数.cmd 显示网络配置.bat 显示翻滚字符.bat 显示进度.bat 显示进度.cmd 显示... -
易语言程序免安装版下载
2011-04-07 09:28:504) 修改静态编译后“读配置项”命令在第三个参数“配置项名称”为空文本时导致程序崩溃的BUG 5) 修改高级选择夹中的组件在窗口载入后强制得到焦点的BUG 6) 修改MYSQL支持库跨静态编译的EXE和DLL传递连接句柄和... -
DotNetTextBox V6.0.10 商业版 下载 (已知最新)
2016-10-10 22:50:06更改为: 当文件内容为空时,服务端给出"文件内容为空"的提示,并关闭上传菜单。 2)修正当插入Word文件,未选定文件而直接点击导入编辑时,没有任何提示且上传菜单仍然存在的问题。 更改为: 当未选择上传文件时,... -
阿里百秀 XIU v7.0 秀主题下载2019最新版
2019-09-11 14:52:19新增分类页面关键词留空则默认调用分类名,不为空则调用分类名 Gravatar选择:可以是官方ssl,可以是默认,可以是多说 聚合文章小工具:侧栏聚合文章小工具新增显示纯图片模式; 列表模式:列表模式新增4图模式 特别... -
手机验证码功能,点击发送验证码显示链接服务器失败
2020-09-02 13:47:26$result = array("code"=>-1,"msg"=>"手机号或验证码不能为空!"); }elseif(!preg_match("/^1[34578]{1}\d{9}$/",$shouji)){ $result = array("code"=>-2,"msg"=>"手机号不合法!"); }elseif($code != $_... -
isEmpty : 判断数组是否为空 search : 在数组objects中搜索元素element selectSort : 选择排序 insertSort : 插入排序 bubbleSort : 冒泡排序 recursiveSort : 递归快速排序 fastStackSort : 栈快速排序 upsideDown ...
-
修复当请求参数为@RequestBody 时,参数类型显示不正确问题。 新增直接从请求路径中获取 Swagger JSON,多项目下API文档生成。 解决中文乱码问题。 真诚感谢 NealLemon 的代码贡献。 版本: SwaggerToWord 1.4.2 ...
-
-u REQUESTURL 设定目标URL, 示例. -u="https://www.test.com/login.php" -f REQUESTFILE 从文件导入HTTP请求 -https 当从文件导入HTTP请求时,启用https(SSL) -get 使用GET方法,默认: POST -...
-
自定义RecyclerView下拉刷新上拉加载,支持加载loading,空页面,异常界面,有数据界面状态切换 缓存使用Realm数据库,做数据的增删改查 状态管理库与Activity和Fragment结合,可以自由切换不同的状态 3.3 项目...
-
下载 js-valid.js 文件放到项目中即可。 使用说明 本插件的使用方法基本和在 element-ui 中使用 async-validator 类似。 第一步:在您的项目中引入 JS-Valid <script src="/js-valid.js"></script> ...
-
url是图片路径,这样绑定后,这个ImageView就会去显示这张图片,不限网络图片还是本地图片。 如果需要给一个默认加载中的图片,可以加这一句 binding:placeholderRes="@{R.mipmap.ic_launcher_round}" R文件需要在...
-
动态模版, view 被选中, 可从 e.detail.view 获取点击的 view,如为空,则是选中背景 否 touchEnd function 动态模版,触碰结束。只有 view,代表触碰的对象;包含 view、type、index,代表点击了删除 icon; ...
-
|字段名| 字段类型| 是否可为空| 备注 |:------:|:------:|:------:|:------:| | Id| Int(11) | 否| 主键 |Modify| Datetime| 是| 修改时间 |Display| Int | 否| 是否被删除 |Uid| Int | 否| 用户id |Qid| Int | ...
-
toolbars :配置你想显示的工具栏,取值为mini,normal,full,代表小,一般,全部。如果默认的工具栏的按钮数量不符合您的要求,您可以在settings里面配置自己的显示按钮。参见后面介绍。 imagePath :图片上传后保存...
-
2、注意程序是有去重功能的,所以要清空数据重新跑的话一定要把redis的去重队列删掉,否则起始ID被记录为已爬的话也会出现抓取为空的现象。清空redis数据 运行cleanRedis.py即可。 3、另外,微博开始对IP有限制了,...
-
显示为 李四:这是一个全局状态。 如果在 template 文件中使用,需在属性 data 中引用$state <!-- 这是一个template --> <template name="t1"> <view>{{$state.msg}}</view> </template...
-
将图片标签放在窗体底层面板,然后将窗体转化为JPan的容器,将JPan设为透明,背景图片就设置好了,之后就可以直接在该JPan中添加组件* package com.bluerabbit.librarysystem.view; import java.awt.Font; import...
-
文章围绕着在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,图文并茂生动有趣,非常推荐! 《图解 HTTP》 也是一名日本作者写的。这本书对 HTTP 协议进行了全面系统的介绍,列举了很多常见...
-
互联网架构为什么要做服务化 微服务架构技术栈 分布式理论:CAP 是三选二吗? 使用LCN框架解决分布式事物 百度开源的分布式 id 生成器 大型分布式电商系统的订单生成策略 分布式事务综述 分布式事务...
收藏数
156
精华内容
62