Python 网络数据采集(一):BeautifulSoup

Python 网络数据采集(一):BeautifulSoup

        • 起个头
        • 网络数据采集大有所为
        • 第一个任务
        • 1. Beautifulsoup 简介
        • 1.1 安装 BeautifulSoup
        • 1.1.2 运行 BeautifulSoup
        • 1.1.3 复杂 HTML 解析
        • 1.1.4 BeautifulSoup 的 find() 和 findAll()
        • 1.1.5 其它 BeautifulSoup 对象
        • 1.1.6 导航树
        • 2. 一个完整的例子
        • 3. 下一节,抓取所有网页

 作者:高玉涵
 时间:2022.5.20 16:47
 博客:blog.csdn.net/cg_i

助力每一个不知死活的梦想。

起个头

 网络数据采集并不是一门语言的独门秘籍,Python、Java、PHP、C#、Go 等语言都可以讲出精彩的故事。有人说编程语言就是宗教,不同语言的设计哲学不同,行为方式各异,“非我族类,其心必异”,但本着美好生活、快乐修行的初衷,我对所有语言都时刻保持敬畏之心,尊重信仰自由,努力做好自己的功课。对爱好 Python 的人来说,人生苦短,Python 当歌!简洁轻松的语法,开箱即用的模块,强大快乐的社区,总可以快速构建出简单高效的解决方案。使用 Python 的日子总是充满快乐的,本人使用 Python 网络数据采集的故事也不例外。本着独乐乐,不如众乐乐,遂想不如将这次学习经历分享。鉴于网络数据采集涉及多个领域、内容包罗万象,就此一篇远不足以覆盖所有主题,与其如此,倒不如,做一个专栏,以一个个例子程序开始,通过思考和解决问题,一层层将主题展开。考虑到这是我的一次全新尝试,也只是利用工作之余闲暇时间,边学习边整理,能持否?就用一句话来自勉”但行好事,莫问前程“。

网络数据采集大有所为

 在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。搜索引擎可以满足人们对数据的共性需求,即“我来了,我看见”,而网络数据采集技术可以进一步精练数据,把网络中杂乱无意的数据聚合成合理规范的形式,方便分析与挖掘,真正实现“我征服”。工作中,你可能经常为找数据而烦恼,或者眼睁睁看着眼前的几百页数据却只能长恨咫尺天涯,又或者数据杂乱无章的网站中满是带着陷阱的表单和坑爹的验证码,甚至需要的数据都在网页版的 PDF 和网络图片中。而作为一名网站管理员,你也需要了解常用的网络数据采集手段,以及常用的网络表单安全措施,以提高网站访问的安全性,所谓道高一尺,魔高一丈······一念清净,烈焰成池,一念觉醒,方登彼岸。

第一个任务

 一旦你开始网络数据采集,就会感受到浏览器为我们做的所有细节。网络上如果没有 HTML 文本格式层、CSS 样式层、JavaScript 执行层和图像渲染层,乍看起来会有点儿吓人,但是在这里,我将介绍如何不通过浏览器的帮助来格式化和理解数据。我的任务是爬取 https://free.kuaidaili.com/free/inha/ 这个页面里所有代理服务器的信息,思考之下通常的想法:

  • 通过网站域名获取 HTML数据
  • 根据目标信息解析数据
  • 存储目标信息
  • 如果有必要,移动到另一个网页重复这个过程。

 我将围绕上述思考来学习并编写爬虫程序。

1. Beautifulsoup 简介

 “美味的汤,绿色的浓汤,
 在热气腾腾的盖碗里装!
 谁不愿意尝一尝,这样的好汤?
 晚餐用的汤,美味的汤!”

 BeautifulSoup 库的名字取自刘易斯·卡罗尔在《爱丽丝梦游仙境》里的同名诗歌。
Python 网络数据采集(一):BeautifulSoup_第1张图片
以下内容引用自《Beautiful Soup 4.4.0 文档》

 Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式. Beautiful Soup 会帮你节省数小时甚至数天的工作时间.
 就像它在仙境中的说法一样,BeautifulSoup 尝试化平淡为神奇。它通过定位 HTML 标签来格式化和组织复杂的网络信息,用简单易用的 Python 对象为我们展现 XML 结构信息。

1.1 安装 BeautifulSoup

 由于 BeautifulSoup 库不是 Python 标准库,因此需要单独安装。我使用最新的 BeautifulSoup 4 版本(也叫 BS4)。BeautifulSoup 4 的所有安装方法都可在官方文档里面找到,这里就不再过多赘述。另外,注意所有例子只在 Python 3.x 下运行。

1.1.2 运行 BeautifulSoup

 BeautifulSoup 库最常用的对象恰好就是 BeautifulSoup 对象。

from urllib.request import urlopen
from bs4 import BeautifulSoup
html = urlopen("http://www.baidu.com")
bsObj = BeautifulSoup(html.read())
print(bsObj.title)

 输出结果是:

百度一下,你就知道

 代码第一行的含义:它查找 Python 的 request 模块(在 urllib 库里面),只导入一个 urlopen 函数。urllib 是 python 的标准库(就是说你不用额外安装就可以运行这个例子),包含了从网络请求数据,处理 cookie,甚至改变请求头和用户代理这些元数据的函数。网络采集中将广泛使用 urllib,所以建议你读读这个库的 Python 文档(https://docs.python.org/3/library/urllib.html)。

 urlopen 用来打开并读取一个从网络获取的远程对象。因为它是一个非常通用的库(它可以轻松读取 HTML 文件、图像文件,或其他任何文件流),所以我将频繁地使用它。然后调用 html.read() 获取网页中的 HTML 内容。这样就可以把 HTML 内容传到 BeautifulSoup 对象,转换成下面的结构:

html -> ……

---- head -> 百度一下,你就知道

-------- title -> 百度一下,你就知道

 可以看出,我们从网页中提取的 </code>标签被嵌在 BeautifulSoup 对象 bsObj 结构的第二层(html -> head -> title)。但是,当我从对象里提取 title 标签的时候,可以直接调用它:</p> <pre><code>bsObj.title </code></pre> <p> 其实,下面的所有函数调用都可以产生同样的结果:</p> <pre><code>bsObj.html.head.title bsObj.head.title bsObj.html.title </code></pre> <p> 希望这个例子可以向你展示 BeautifulSoup 库的强大与简单。其实,任何 HTML(或 XML)文件的任意节点信息都可以被提取出来,只要目标信息的旁边或附近有标记就行。</p> <h4>1.1.3 复杂 HTML 解析</h4> <p> 当我们从复杂的网页中寻觅信息时,有很多技巧可以帮我们“剔去”网页上那些不需要的信息。从中抽取出我们需要的信息。下面我创建一个网络采集程序来抓取 https://free.kuaidaili.com/free/inha/ 这个网页。</p> <p> 在这个页面里,所有免费代理信息内容都放在一个表格里,你可以看到网页源代码里的 table 标签,如下所示:</p> <pre><code><table class="table table-bordered table-striped"> <thead> <tr> <th>IP</th> <th>PORT</th> <th>匿名度</th> <th>类型</th> <th>位置</th> <th>响应速度</th> <th>最后验证时间</th> </tr> </thead> <tbody> <tr> <td data-title="IP">103.37.141.69</td> <td data-title="PORT">80</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 北京 </td> <td data-title="响应速度">6秒</td> <td data-title="最后验证时间">2022-05-20 14:31:01</td> </tr> <tr> <td data-title="IP">103.37.141.69</td> <td data-title="PORT">80</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 北京 </td> <td data-title="响应速度">6秒</td> <td data-title="最后验证时间">2022-05-20 13:31:01</td> </tr> <tr> <td data-title="IP">103.37.141.69</td> <td data-title="PORT">80</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 北京 </td> <td data-title="响应速度">6秒</td> <td data-title="最后验证时间">2022-05-20 12:31:01</td> </tr> <tr> <td data-title="IP">122.9.101.6</td> <td data-title="PORT">8888</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 香港 666666999999999.com </td> <td data-title="响应速度">0.4秒</td> <td data-title="最后验证时间">2022-05-20 11:31:01</td> </tr> <tr> <td data-title="IP">106.15.197.250</td> <td data-title="PORT">8001</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 上海 联通</td> <td data-title="响应速度">1秒</td> <td data-title="最后验证时间">2022-05-20 10:31:02</td> </tr> <tr> <td data-title="IP">14.215.212.37</td> <td data-title="PORT">9168</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 广东 东莞 电信</td> <td data-title="响应速度">4秒</td> <td data-title="最后验证时间">2022-05-20 09:31:01</td> </tr> <tr> <td data-title="IP">103.37.141.69</td> <td data-title="PORT">80</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 北京 </td> <td data-title="响应速度">6秒</td> <td data-title="最后验证时间">2022-05-20 08:31:01</td> </tr> <tr> <td data-title="IP">39.106.71.115</td> <td data-title="PORT">7890</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 北京 联通</td> <td data-title="响应速度">0.3秒</td> <td data-title="最后验证时间">2022-05-20 07:31:01</td> </tr> <tr> <td data-title="IP">183.236.232.160</td> <td data-title="PORT">8080</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 广东 江门 移动</td> <td data-title="响应速度">6秒</td> <td data-title="最后验证时间">2022-05-20 06:31:01</td> </tr> <tr> <td data-title="IP">202.55.5.209</td> <td data-title="PORT">8090</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 香港 电信 </td> <td data-title="响应速度">0.3秒</td> <td data-title="最后验证时间">2022-05-20 05:31:01</td> </tr> <tr> <td data-title="IP">118.180.166.195</td> <td data-title="PORT">8060</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">甘肃省庆阳市 电信</td> <td data-title="响应速度">0.4秒</td> <td data-title="最后验证时间">2022-05-20 04:31:01</td> </tr> <tr> <td data-title="IP">121.13.252.61</td> <td data-title="PORT">41564</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">广东省东莞市 电信</td> <td data-title="响应速度">2秒</td> <td data-title="最后验证时间">2022-05-20 03:31:01</td> </tr> <tr> <td data-title="IP">111.3.118.247</td> <td data-title="PORT">30001</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 浙江 台州 移动</td> <td data-title="响应速度">0.2秒</td> <td data-title="最后验证时间">2022-05-20 02:31:02</td> </tr> <tr> <td data-title="IP">61.216.185.88</td> <td data-title="PORT">60808</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 台湾 屏东县 </td> <td data-title="响应速度">0.7秒</td> <td data-title="最后验证时间">2022-05-20 01:31:01</td> </tr> <tr> <td data-title="IP">202.55.5.209</td> <td data-title="PORT">8090</td> <td data-title="匿名度">高匿名</td> <td data-title="类型">HTTP</td> <td data-title="位置">中国 香港 电信 </td> <td data-title="响应速度">0.3秒</td> <td data-title="最后验证时间">2022-05-20 00:31:01</td> </tr> </tbody> </table> </code></pre> <p> 我们可以抓出整个页面,然后创建一个 BeautifulSoup 对象,和一开始使用的程序类似:</p> <pre><code>from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen("https://free.kuaidaili.com/free/inha/") bsObj = BeautifulSoup(html) </code></pre> <p> 通过 BeautifulSoup 对象,我们可以用 findAll 函数抽取只包含在 <code><table><tr><td data-title="IP"></td></tr></table></code>标签里的文字,这样就会得到 IP (findAll 是一个非常灵活的函数,后面会经常用到它):</p> <pre><code>nameList = bsObj.findAll("td", {"data-title":"IP"}) for name in nameList: print(name.get_text()) </code></pre> <p> 输出结果:</p> <pre><code>103.37.141.69 103.37.141.69 103.37.141.69 122.9.101.6 106.15.197.250 14.215.212.37 103.37.141.69 39.106.71.115 183.236.232.160 202.55.5.209 118.180.166.195 121.13.252.61 111.3.118.247 61.216.185.88 202.55.5.209 </code></pre> <p> 代码执行以后就会按照表格中的顺序显示所有的 IP。这是怎么实现的呢?之前,我调用 bsObj.tagName 只能获取页面中的第一个指定的标签。现在,我调用 bsObj.findAll(tagName, tgaAttributes) 可以获取页面中所有指定的标签,不再只是第一个了。</p> <p> 获取 IP 列表之后,程序遍历列表中所有的名字,然后打印 name.get_text(),就可以把标签中的内容分开显示了。</p> <h4>1.1.4 BeautifulSoup 的 find() 和 findAll()</h4> <p> BeautifulSoup 的 find() 和 findAll() 可能是最常用的两个函数。借助它们,你可以通过标签的不同属性轻松地过滤 HTML 页面,查找需要的标签组或单个标签。</p> <p> 这两个函数非常相似,BeautifulSoup 文档里两者的定义是这样的:</p> <pre><code>findAll(tag, attributes, recursive, text, limit, keywords) find(tag, attributes, recursive, text, keywords) </code></pre> <p> 很可能你会发现,自己在 95% 的时间里都只需要使用前两个参数:tag 和 attributes。但是,我们还是应该仔细地观察所有的参数。</p> <p> 标签参数 tag 前面已经介绍过——你可以传一个标签的名称或多个标签名称组成的 Python 列表做标签参数。例如,下面的代码将返回一个包含 HTML 文档中所有标题标签的列表:</p> <pre><code>findAll({"h1","h2","h3","h4","h5","h6"}) </code></pre> <p> 属性参数 attributes 是用一个 Python 字典封装一个标签的若干属性对应的属性值。例如,下面这个函数会返回 HTML 文档里红色与绿色两种颜色的 span 标签:</p> <pre><code>findAll("span", {"class":{"green", "red"}}) </code></pre> <p> 递归参数 recursive 是一个布尔变量。你想抓取 HTML 文档标签结构里多少层的信息?如果 recursive 设置为 True,findAll 就会根据你的要求去查找标签参数的所有子标签,以及子标签的子标签。如果 recursive 设置为 False,findAll 就只查找文档的一级标签。findAll 默认是支持递归查找的(recursive 默认值是 True);一般情况下这个参数不需要设置,除非你真正了解自己需要哪些信息,而且抓取速度非常重要,那时你可以设置递归参数。</p> <p> 文本参数 text 有点不同,它是用标签的文本内容去匹配,而不是用标签的属性。假如我们想查找前面网页中类型为“HTTP”的标签数量,我们可以把之前的 findAll 方法换成下面的代码:</p> <pre><code>nameList = bsObj.findAll(text="HTTP") print(len(nameList)) </code></pre> <p> 输出结果为“15”。</p> <p> 范围限制参数 limit,显然只用于 findAll 方法。find 其实等价于 findAll 的 limit 等于 1 时的情形。如果你只对网页中获取的前 X 项结果感兴趣,就可以设置它。但是要注意,这个参数设置之后,获得的前几项结果是按照网页上的顺序排序的,未必是你想要的那前几项。</p> <p> 还有一个关键词参数 keyword,可以让你选择那些具有指定属性的标签。例如:</p> <pre><code>allText = bsObj.findAll(id="text") print(allText[0].get_text()) </code></pre> <p> 虽然关键词参数 keyword 在一些场景中很有用,但是,它是 BeautifulSoup 在技术上做的一个冗余功能。任何用关键词参数能完成的任务,同样可以用下面将介绍的技术解决。例如,下面两行代码是完全一样的:</p> <pre><code>bsObj.findAll(id="text") bsObj.findAll("", {"id":"text"}) </code></pre> <p> 另外,用 keyword 偶乐会出现问题,尤其是在用 class 属性查找标签的时候,因为 class 是 Python 中受保护的关键字。也就是说,class 是 Python 语言的保留字,在 Python 程序里是不能当作变量或参数名使用的。假如你运行下面的代码,Python 就会因为你误用 class 保留字而产生一个语法错误:</p> <pre><code>bsObj.findAll(class="green") </code></pre> <p> 不过,你可以用 BeautifulSoup 提供的有点臃肿的方案,在 class 后面增加一个下划线:</p> <pre><code>bsObj.findAll(class_="green") </code></pre> <p> 另外,你也可以用属性参数把 class 用引号包起来:</p> <pre><code>bsObj.findAll("", {"class":"green"}) </code></pre> <p> 最后回忆一下前面的内容,通过标签参数 tag 把标签列表传到 findAll() 里获取一列标签,其实就是一个“或”关系的过滤器(即,先择所有带标签1或标签2或标签3······的一列标签)。如果你的标签列表很长,就需要花很长时间才能写完。而关键词参数 keyword 可以让你增加一个“与”关系的过滤器来简化工作。</p> <h4>1.1.5 其它 BeautifulSoup 对象</h4> <p> 看到这里,你已经见过 BeautifulSoup 库里的两种对象了。</p> <ul> <li>BeautifulSoup 对象</li> </ul> <p> 前面代码示例中的 bsObj</p> <ul> <li>标签 Tag 对象</li> </ul> <p> BeautifulSoup 对象通过 find 和 findAll,或者直接调用子标签获取的一列对象或单个对象,就像:</p> <pre><code>bsObj.title </code></pre> <p> 但是,这个库还有另外两种对象,虽然不常用,却应该了解一下。</p> <ul> <li>NavigableString 对象</li> </ul> <p> 用来表示标签里的文字,不是标签(有些函数可以操作和生成 NavigableString 对象,而不是标签对象)。</p> <ul> <li>Comment 对象</li> </ul> <p> 用来查找 HTML 文档的注释标签。<code><!-- 像这样 --></code></p> <p> 这四个对象是目前你用 BeautifulSoup 库时会遇到的所有对象。</p> <h4>1.1.6 导航树</h4> <p> findAll 函数通过标签的名称和属性来查找标签。但是如果你需要通过标签在文档中的位置来查找标签,该怎么办?这就是导航树(Navigating Trees)的作用。在前面,我们看过用单一方向进行 BeautifulSoup 标签树的导航:</p> <pre><code>bsObj.tag.subTag.anotherSubTag </code></pre> <p> 现在我们还用免费代理页面,演示 HTML 导航树的纵向和横向导航(为了简洁,只对表格进行操作)。</p> <p> 这个 表格 <code><table></code>可以映射成一棵树,如下所示:</p> <ul> <li>table</li> </ul> <p>  —— thead</p> <p>    —— tr</p> <p>      —— th</p> <p>  —— tbody</p> <p>    —— tr</p> <p>      —— th</p> <p>        —— td</p> <p>······ 其它表格行省略</p> <ol> <li>处理子标签和其他后代标签</li> </ol> <p> 和许多其他库一样,在 BeautifulSoup 库里,孩子(child)和后代(descendant)有显著的不同:和人类的家谱一样,子标签就是一个父标签的下一级,而后代标签是指一个父标签下面所有级别的标签。例如,tr 标签是 table 标签的子标签,而 thead、tr、th 和 tbody 标签都是 table 标签的后代标签(示例页面中就是如此)。所有的子标签都是后代标签,但不是所有的后代标签都是子标签。</p> <p> 一般情况下,BeautifulSoup 函数总是处理当前标签的后代标签。例如,bsObj.body.h1 选择了 body 标签后代里的第一个 h1 标签,不会去找 body 外面的标签。</p> <p> 类似地,bsObj.div.findAll(“img”) 会找出文档中第一个 div 标签,然后获取这个 div 后代里所有的 img 标签列表。</p> <p> 如果你只想找出子标签,可以用 .children 标签:</p> <pre><code>values = bsObj.find("td",{"data-title":"IP"}).children for v in values: print(v) </code></pre> <p> 输出结果:</p> <pre><code>60.170.204.30 </code></pre> <p> 这段代码会打印表格中找到的第一个符合指定属性的值。因为 td 标签后面没有子标签和后代标签,下面代码输出的结果完全一样:</p> <pre><code>value = bsObj.find("td",{"data-title":"IP"}) print(value) values = bsObj.find("td",{"data-title":"IP"}).descendants for v in values: print(v) </code></pre> <ol start="2"> <li>处理兄弟标签</li> </ol> <p> BeautifulSoup 的 next_siblings() 函数可以让收集表格数据成为简单的事情,尤其是处理带标题行的表格:</p> <pre><code>values = bsObj.find("td",{"data-title":"IP"}).next_siblings for v in values: print(v.get_text()) </code></pre> <p> 输出结果:</p> <pre><code>8060 高匿名 HTTP 中国 安徽 蚌埠 电信 1秒 2022-05-20 16:31:02 </code></pre> <p> 这段代码会打印表里的所有列值,第一列除外。为什么第一列被跳过了呢?有两个理由。首先,对象不能把自己作为兄弟标签。任何时候你获取一个标签的兄弟标签,都不会包含这个标签本身。其次,这个函数只调用后面的兄弟标签。例如,如果我们选择一组标签中位于中间位置的一个标签,然后用 next_siblings() 函数,那么它就只会返回在它后面兄弟标签。因此,选择标签行然后调用 next_siblings,可以选择表格中除了标题行以外的所有行。</p> <blockquote> 让标签的选择更具体 如果我们选择 bsObj.table.tr 或直接就用 bsObj.tr 来获取表格中的第一行,上面的代码也可以获得正确的结果。但是,我还是采用更长的形式写了一行代码,这可以避免各种意外。即使页面上只有一个表格(或其它目标标签),只用标签也很容易丢失细节。另外,页面布局总是不断变化的。一个标签这次是在表格中第一行的位置,没准儿哪天就在第二行或第三行了。如果想让你的爬虫更稳定,最好还是让标签的选择更加具体。如果有属性,就利用标签的属性。 </blockquote> <p> 和 next_siblings 一样,如果你很容易找到一组兄弟标签中的最后一个标签,那么 previous_siblings 函数也会很有用。当然,还有 next_sibling 和 previous_sibling 函数,与前面的作用类似,只是它们返回的是单个标签,而不是一组标签。</p> <ol start="3"> <li>父标签处理</li> </ol> <p> 在抓取网页的时候,查找父标签的需求比查找子标签和兄弟标签要少很多。通常情况下,如果以抓取网页内容为目的来观察 HTML 页面,我们都是从最上层标签开始的,然后思考如何定位我们想要的数据块所在的位置。但是,偶尔在特殊情况下你也会用到父标签查找函数,parent 和 parents。</p> <h4>2. 一个完整的例子</h4> <pre><code>''' 作者:高玉涵 时间:2022.5.20 17:50 说明:爬取代理信息第一版 ''' import socket from urllib.request import urlopen from urllib.error import HTTPError from bs4 import BeautifulSoup def getTable(url): try: html = urlopen(url) except HTTPError as e: return None except socket.error as e: return None try: bsObj = BeautifulSoup(html.read(), 'html.parser') table = bsObj.table except AttributeError as e: return None return table def getAgentData(table): # 抓取到代理数据 agent_data = [] # 表头 theads = [] # 获取表头 theads = getThead(table) try: # 获取所有行 rows = table.findAll('tr') except AttributeError as e: print("TR 标签未找到!") return None else: for row in rows: # 存放代理信息 agent = {} for t in theads: # 逐行查找与列对应的数据 text = row.find('td', {'data-title':t}) if text is not None: agent.setdefault(t, text.get_text()) if len(agent) != 0: agent_data.append(agent) return agent_data def getThead(table): # 存放获取的表头值 theads = [] try: # 遍历表格头子标签 for h in table.thead.tr.children: # 提取标签内的值去掉前后空格 text = h.get_text().replace(" ","") # 忽略不可见的换行符 if text != '\n': theads.append(text) except AttributeError as e: print("TR 标签未找到!") return None else: return theads if __name__ == '__main__': # 免费代理信息表格 table = getTable('https://free.kuaidaili.com/free/inha/') if table == None: print('Table could not be found') else: # 获取代理信息 agents = getAgentData(table) for a in agents: print(a) </code></pre> <p> 输出结果:</p> <pre><code>{'IP': '183.247.199.114', 'PORT': '30001', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 浙江 台州 移动', '响应速度': '0.4秒', '最后验证时间': '2022-05-20 17:31:01'} {'IP': '60.170.204.30', 'PORT': '8060', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 安徽 蚌埠 电信', '响应速度': '1秒', '最后验证时间': '2022-05-20 16:31:02'} {'IP': '14.215.212.37', 'PORT': '9168', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 广东 东莞 电信', '响应速度': '4秒', '最后验证时间': '2022-05-20 15:31:01'} {'IP': '103.37.141.69', 'PORT': '80', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 北京 ', '响应速度': '6秒', '最后验证时间': '2022-05-20 14:31:01'} {'IP': '103.37.141.69', 'PORT': '80', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 北京 ', '响应速度': '6秒', '最后验证时间': '2022-05-20 13:31:01'} {'IP': '103.37.141.69', 'PORT': '80', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 北京 ', '响应速度': '6秒', '最后验证时间': '2022-05-20 12:31:01'} {'IP': '122.9.101.6', 'PORT': '8888', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 香港 666666999999999.com ', '响应速度': '0.4秒', '最后验证时间': '2022-05-20 11:31:01'} {'IP': '106.15.197.250', 'PORT': '8001', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 上海 联通', '响应速度': '1秒', '最后验证时间': '2022-05-20 10:31:02'} {'IP': '14.215.212.37', 'PORT': '9168', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 广东 东莞 电信', '响应速度': '4秒', '最后验证时间': '2022-05-20 09:31:01'} {'IP': '103.37.141.69', 'PORT': '80', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 北京 ', '响应速度': '6秒', '最后验证时间': '2022-05-20 08:31:01'} {'IP': '39.106.71.115', 'PORT': '7890', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 北京 联通', '响应速度': '0.3秒', '最后验证时间': '2022-05-20 07:31:01'} {'IP': '183.236.232.160', 'PORT': '8080', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 广东 江门 移动', '响应速度': '6秒', '最后验证时间': '2022-05-20 06:31:01'} {'IP': '202.55.5.209', 'PORT': '8090', '匿名度': '高匿名', '类型': 'HTTP', '位置': '中国 香港 电信 ', '响应速度': '0.3秒', '最后验证时间': '2022-05-20 05:31:01'} {'IP': '118.180.166.195', 'PORT': '8060', '匿名度': '高匿名', '类型': 'HTTP', '位置': '甘肃省庆阳市 电信', '响应速度': '0.4秒', '最后验证时间': '2022-05-20 04:31:01'} {'IP': '121.13.252.61', 'PORT': '41564', '匿名度': '高匿名', '类型': 'HTTP', '位置': '广东省东莞市 电信', '响应速度': '2秒', '最后验证时间': '2022-05-20 03:31:01'} </code></pre> <h4>3. 下一节,抓取所有网页</h4> <p> 我基本完成了开篇设定的任务目标,从结果看,程序只爬取了首页上的数据,而网站所提供的众多代理服务器数据,都分散在的其它页面里。任务列表里的“如果有必要,移动到另一个网页重复这个过程”并未实现。这个任务将留在下一节中给出。</p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1561128583907315712"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Python,网络,python,爬虫,BeautifulSoup,免费代理)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1892510076510466048.htm" title="Python学习心得两大编程思想" target="_blank">Python学习心得两大编程思想</a> <span class="text-muted">lifegoesonwjl</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>一、两大编程思想:1.面向过程:功能上的封装典型代表:C语言2.面向对象:属性和行为上的封装典型代表:Python、Java二、面向过程与面向对象的异同点:1.区别:面向过程:事物比较简单,可用线性的思维去解决面向对象:事务比较复杂,使用简单的线性思维无法解决2.共同点:(1)面向过程和面向对象都是解决实际问题的一种思维方式;(2)二者相辅相成,并不是对立的;(3)解决复杂问题,通过面向对象方式便</div> </li> <li><a href="/article/1892509698381377536.htm" title="Linux升级Anacodna并配置jupyterLab" target="_blank">Linux升级Anacodna并配置jupyterLab</a> <span class="text-muted">伪_装</span> <a class="tag" taget="_blank" href="/search/%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2/1.htm">环境部署</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/Anaconda/1.htm">Anaconda</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a> <div>在使用Anaconda的过程中,随着项目和需求的发展,可能需要升级Anaconda的Base环境中的Python版本。本文将详细介绍如何安全地进行升级,包括步骤、代码示例与最终流程图。升级Python一、环境准备在进行任何升级之前,建议先检查当前的Python版本以及各个库的兼容性。我们可以通过以下命令检查当前的Python版本:condainfo你会看到类似以下的输出,其中包含了当前Python</div> </li> <li><a href="/article/1892509319568617472.htm" title="信息获取、扫描与服务识别、漏洞验证、嗅探攻击、代理与隧道、metasploit渗透攻击等" target="_blank">信息获取、扫描与服务识别、漏洞验证、嗅探攻击、代理与隧道、metasploit渗透攻击等</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>1.信息获取信息获取是渗透测试和安全评估的第一步,主要目的是收集目标系统的各种信息。这些信息可以帮助确定攻击面和潜在的安全漏洞。技术和工具:域名信息:使用whois查询域名注册信息。DNS查询:使用nslookup或dig获取DNS记录,包括A记录、MX记录等。网络扫描:使用nmap或Masscan扫描目标网络,收集IP地址和开放端口信息。公开信息:通过搜索引擎、社交媒体、公司网站等公开资源获取目</div> </li> <li><a href="/article/1892509193236180992.htm" title="数据包结构" target="_blank">数据包结构</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>据包(数据包)结构是网络通信中的基本组成部分。它定义了在网络上传输数据时的组织方式和格式。了解数据包的结构有助于理解网络通信的工作原理,排查网络问题以及优化网络性能。以下是对数据包结构的详细解释:数据包的基本组成数据包通常由以下几个主要部分组成:头部(Header):定义:头部包含了用于路由和控制的数据包的元数据。这部分信息帮助网络设备(如路由器和交换机)正确地处理和转发数据包。内容:源地址和目的</div> </li> <li><a href="/article/1892508940047020032.htm" title="【Linux】删除Conda虚拟环境" target="_blank">【Linux】删除Conda虚拟环境</a> <span class="text-muted">不是伍壹</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>1、查看当前系统的conda虚拟环境condainfo--envscondaenvlist2、创建虚拟的环境condacreate-n(你的环境名字)python=(你需要的版本号,如(3.7,3.8,3.10))3、查看安装了哪些包condalist4、删除虚拟环境condaremove-nname--all5、删除虚拟环境中的包condaremove--name$(需要删除的环境名字)$(需要</div> </li> <li><a href="/article/1892508687893852160.htm" title="Nginx配置反向代理不成功的原因(Docker安装版)" target="_blank">Nginx配置反向代理不成功的原因(Docker安装版)</a> <span class="text-muted">程序员迪迦</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">项目实战</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>问题背景在linux服务器中使用docker下载了Nginx,然后根据网上的教程来配置反向代理的时候发现80端口无法访问server块的配置server{listen80;server_name127.0.0.1;#access_log/var/log/nginx/host.access.logmain;location/{proxy_passhttp://127.0.0.1:8080;#inde</div> </li> <li><a href="/article/1892505537497591808.htm" title="动态规划之背包问题--python版本" target="_blank">动态规划之背包问题--python版本</a> <span class="text-muted">我是小码搬运工</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80/1.htm">python基础</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/1.htm">动态规划</a><a class="tag" taget="_blank" href="/search/%E8%83%8C%E5%8C%85%E9%97%AE%E9%A2%98/1.htm">背包问题</a><a class="tag" taget="_blank" href="/search/python%E7%89%88%E6%9C%AC/1.htm">python版本</a> <div>动态规划之背包问题–python版本问题已知一个最大量的背包,给定一组给定固定价值和固定体积的物品,求在不超过最大值的前提下,能放入背包中的最大总价值。解题思路该问题是典型的动态规划问题,分为三种不同的类型(0-1背包问题、完全背包和多重背包问题)解题关键–状态转移表达式:B(k,C)=max(B(k−1,C),B(k−1,C−ci)+vi)B(k,C)=max(B(k-1,C),B(k-1,C-</div> </li> <li><a href="/article/1892503900867588096.htm" title="深度学习工厂的蓝图:拆解CUDA驱动、PyTorch与OpenCV的依赖关系" target="_blank">深度学习工厂的蓝图:拆解CUDA驱动、PyTorch与OpenCV的依赖关系</a> <span class="text-muted">时光旅人01号</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a> <div>想象一下,你正在建造一座深度学习工厂,这座工厂专门用于高效处理深度学习任务(如训练神经网络)和计算机视觉任务(如图像处理)。为了让工厂顺利运转,你需要搭建基础设施、安装设备、设置生产线,并配备控制台来管理整个生产过程。以下是这座工厂的详细构建过程:1.工厂的基础设施:Ubuntu比喻:Ubuntu是工厂所在的土地和建筑,提供了基础设施和运行环境。作用:提供操作系统环境,支持安装和运行各种工具和框架</div> </li> <li><a href="/article/1892502890174541824.htm" title="Jupyter使用Nginx做反向代理" target="_blank">Jupyter使用Nginx做反向代理</a> <span class="text-muted">syuszu</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>1.在/nginx/conf/nginx.conf上进行修改因为jupyter对于header有过滤,需要将header复制,实例如下:server{server_name127.0.0.1;#入口地址listen80;location/{proxy_passhttp://127.0.0.1:8888;#jupyter服务器地址proxy_set_headerHost$host;proxy_set</div> </li> <li><a href="/article/1892502881513304064.htm" title="nginx反向代理导致jupyter 或jupyterlab 无法输出" target="_blank">nginx反向代理导致jupyter 或jupyterlab 无法输出</a> <span class="text-muted">NEOzhuo</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a> <div>代码运行能力依赖于websocket,因此需要设置nginx的反向代理server{server_nameDOMAINIP_ADDRESS;#服务器域名和IP地址listen80;location/{proxy_passhttp://127.0.0.1:JUPYTER_PORT/;#JUPYTER_PORT为Jupyter运行端口proxy_set_headerX-Real-IP$remote_a</div> </li> <li><a href="/article/1892501862800748544.htm" title="Centos7 搭建 Jupyter + Nginx 服务" target="_blank">Centos7 搭建 Jupyter + Nginx 服务</a> <span class="text-muted">某龙兄</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a> <div>JupyterNotebook(此前被称为IPythonnotebook)是一个交互式笔记本,支持运行40多种编程语言。JupyterNotebook的本质是一个Web应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和markdown。用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。本文讲述如何搭建Jupyter+Nginx服务,仅供学习与交流,请勿用于商业用途一</div> </li> <li><a href="/article/1892501231994204160.htm" title="FakeApp 技术浅析(一)" target="_blank">FakeApp 技术浅析(一)</a> <span class="text-muted">爱研究的小牛</span> <a class="tag" taget="_blank" href="/search/AIGC%E2%80%94%E6%B7%B1%E5%BA%A6%E4%BC%AA%E9%80%A0/1.htm">AIGC—深度伪造</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E7%8E%B0%E5%AE%9E/1.htm">虚拟现实</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>FakeApp是一款早期的深度伪造(Deepfake)工具,最初于2018年发布,用于生成和编辑换脸视频。尽管FakeApp已经不再更新,但它在深度伪造技术的发展中起到了重要作用。1.技术背景与理论基础1.1生成对抗网络(GANs)生成对抗网络(GANs)是深度学习领域中的一种重要模型,由生成器(Generator)和判别器(Discriminator)组成。生成器负责生成逼真的数据(如图像、视频</div> </li> <li><a href="/article/1892498961952993280.htm" title="动态规划之背包问题的Python实现" target="_blank">动态规划之背包问题的Python实现</a> <span class="text-muted">名侦探debug</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E6%B1%82%E8%A7%A3/1.htm">动态规划求解</a> <div>目录1.问题描述2.动态规划之网格法3.python实现1.问题描述题目来源于《算法图解》第9章练习题9.2,如下图所示。对于背包问题,通常的做法有列举法、贪婪算法和动态规划(1)列举法:列举出所有的可能情况,再选择最优解,但当情况很多时,这种算法复杂度很高(2)贪婪算法:在容量允许范围内,每次都拿剩余物品中价值最高的,贪婪算法能够快速解决复杂度很高的问题,但通常得到的是次优解,但就对这个题目而言</div> </li> <li><a href="/article/1892497197967142912.htm" title="总结10个Python赚钱的接单平台 兼职月入5000+" target="_blank">总结10个Python赚钱的接单平台 兼职月入5000+</a> <span class="text-muted">begefefsef</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>前言“如果说当下什么编程语言最靠谱或者比较适合搞副业?”答案肯定100%是:Pythonpython是所有语法中最简单易上手的语言,不需要特别的的英语词汇量,逻辑思维也不需要很差就能上手。而且学会了之后就能编写代码爬取各种数据,制作各种图表,提升工作效率。而且还能利用业余时间接点私活,一个月轻松收入过万不是问题,这样的生活他不香吗?今天就给大家盘点几个基本入门接私活的资源,让你轻松学python,</div> </li> <li><a href="/article/1892495308768735232.htm" title="数据挖掘十大经典算法详解(附原理解析与代码示例)" target="_blank">数据挖掘十大经典算法详解(附原理解析与代码示例)</a> <span class="text-muted">IT程序媛-桃子</span> <a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA%E8%AE%A4%E8%AF%81/1.htm">华为认证</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA/1.htm">华为</a> <div>1.PageRank(链接分析)应用场景:搜索引擎排名、社交网络分析核心原理PageRank通过网页之间的链接关系计算网页的重要性,影响力大的网页排名更高。网页影响力=所有入链页面的加权影响力之和阻尼因子D(通常设为0.85)用于模拟用户随机访问网页的行为代码示例importnetworkxasnxG=nx.DiGraph()G.add_edges_from([("A","B"),("A","C"</div> </li> <li><a href="/article/1892495181991702528.htm" title="大学生学完python靠几个接单网站兼职,实现经济独立" target="_blank">大学生学完python靠几个接单网站兼职,实现经济独立</a> <span class="text-muted">「已注销」</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>大学生学完python靠几个接单网站兼职,实现经济独立程序员就是当今时代的手艺人,程序员可以通过个人的技术来谋生。而在工作之余接私单可以作为一种创富的途径,受到程序员的广泛认可。说句实在话,现在这个时代,很多人仅靠主业顶多维持基本生活,想让自己、家人生活好一点很难。我接的私活并不算多,加起来也就几万左右,只能算一半,我想把一些经验分享出来,毕竟现在生活都不容易,能赚一点是一点。一、程序员接活、新手</div> </li> <li><a href="/article/1892494552284065792.htm" title="【计算机毕设任务书】基于微信小程序的宠物寄养平台的设计与实现" target="_blank">【计算机毕设任务书】基于微信小程序的宠物寄养平台的设计与实现</a> <span class="text-muted">Eastonzhang888</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E8%AE%BE%E4%BB%BB%E5%8A%A1%E4%B9%A6%E5%8F%82%E8%80%83%E6%A1%88%E4%BE%8B/1.htm">计算机毕设任务书参考案例</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%AE%A0%E7%89%A9/1.htm">宠物</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">计算机毕业设计</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a> <div>一、设计的主要内容、技术参数及工作要求研究目的现在宠物寄养管理中已有一些商家使用了基本的管理软件,这些软件都是依靠客户端,只可以特定人员使用,不能实现信息的共享。虽然可以帮助工作人员减少工作量,但从根本上还是无法满足用户的需求。这些软件都还是基于网络发展之初的要求,没有利用现代网络的技术,体现不了更为实用的功能。依靠客户端的系统开发时没有考虑园际化的问题,所以也满足不了国际化的要求。最近几年来,我</div> </li> <li><a href="/article/1892490141654642688.htm" title="网络协议、网络安全架构、网络安全标准" target="_blank">网络协议、网络安全架构、网络安全标准</a> <span class="text-muted">Utopia.️</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>1.网络协议网络协议是计算机网络中设备之间通信的规则集。熟悉常见的网络协议及其工作原理是确保网络安全的基础。常见协议:TCP/IP协议:这是网络通信的基础协议,确保数据从源端传输到目标端,支持多种传输方式(TCP可靠传输,UDP快速但不可靠)。HTTP/HTTPS:HTTP用于浏览器与服务器之间的通信,HTTPS则是在HTTP上添加了SSL/TLS加密层,用于确保数据传输的安全性。DNS协议:用于</div> </li> <li><a href="/article/1892489257264672768.htm" title="nginx反向代理jupyter" target="_blank">nginx反向代理jupyter</a> <span class="text-muted">jerry-89</span> <a class="tag" taget="_blank" href="/search/jupyterlab/1.htm">jupyterlab</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>1.jupyter配置打开配置文件/home/jack/.jupyter/jupyter_notebook_config.py2.反向代理配置这个/jack/与上面添加的对应location/jack/{proxy_passhttp://192.168.196.164:8888/jack/;proxy_set_headerHost$host;proxy_set_headerX-Real-IP$re</div> </li> <li><a href="/article/1892487240139993088.htm" title="Python wifi 安装手机app" target="_blank">Python wifi 安装手机app</a> <span class="text-muted">yichengace</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>目的当测试机数量越来越多时,测试包的安装会成为一个问题,用wifi安装来解决这个问题,并且用脚本语言来批量控制思路思路就是py调用pc端的adb命令,向手机发送请求,无线是因为,如果未来测试机越来越多,一台电脑的usb接口数量肯定不够准备工具python,adb,pycharm,测试用app,这里选择qq(https://qd.myapp.com/myapp/qqteam/AndroidQQ/mo</div> </li> <li><a href="/article/1892487112591208448.htm" title="【人工智能时代】- AI 聚合平台" target="_blank">【人工智能时代】- AI 聚合平台</a> <span class="text-muted">xiaoli8748_软件开发</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%97%B6%E4%BB%A3/1.htm">人工智能时代</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>最近听朋友介绍,国内有个团队开发了一个全功能的AI聚合平台,包含主流的GPT和绘画功能,以及一些其他的衍生功能,几乎应有尽有。于是,对AI很感兴趣的我,便也来瞧瞧这是个什么样的存在,以下便是我的真实使用感受。除此以外,作为一个程序员,我还使用了该平台提供的API接口,开发了一个简单的小程序。文章的末尾,我将提供免费的AI机器人,以及小程序体验地址,记得查收哦~官方网站:https://302.ai</div> </li> <li><a href="/article/1892485474463838208.htm" title="深度学习之目标检测的常用标注工具" target="_blank">深度学习之目标检测的常用标注工具</a> <span class="text-muted">铭瑾熙</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B/1.htm">目标检测</a><a class="tag" taget="_blank" href="/search/%E7%9B%AE%E6%A0%87%E8%B7%9F%E8%B8%AA/1.htm">目标跟踪</a> <div>1LabelImgLabelImg是一款开源的图像标注工具,标签可用于分类和目标检测,它是用Python编写的,并使用Qt作为其图形界面,简单好用。注释以PASCALVOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持COCO数据集格式。2labelmelabelme是一款开源的图像/视频标注工具,标签可用于目标检测、分割和分类。灵感是来自于MIT开源的一款标注工具Label</div> </li> <li><a href="/article/1892484213102407680.htm" title="计算机程序制作的小作品,义乌市中小学生电脑作品制作比赛201203" target="_blank">计算机程序制作的小作品,义乌市中小学生电脑作品制作比赛201203</a> <span class="text-muted">东南前哨</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A8%8B%E5%BA%8F%E5%88%B6%E4%BD%9C%E7%9A%84%E5%B0%8F%E4%BD%9C%E5%93%81/1.htm">计算机程序制作的小作品</a> <div>《义乌市中小学生电脑作品制作比赛201203》由会员分享,可在线阅读,更多相关《义乌市中小学生电脑作品制作比赛201203(4页珍藏版)》请在人人文库网上搜索。1、浙江省义乌市教育研修院关于举办2012年义乌市中小学生电脑作品制作比赛暨首届青少年网络道德建设专题创作活动的通知各中小学:为进一步推进和加强中小学信息技术教育,普及信息技术知识,培养学生创新精神和实践能力,提高信息技术水平,根据上级文件</div> </li> <li><a href="/article/1892483583331856384.htm" title="Python 舆论风向分析爬虫:全流程数据获取、清洗与情感剖析" target="_blank">Python 舆论风向分析爬虫:全流程数据获取、清洗与情感剖析</a> <span class="text-muted">西攻城狮北</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%E6%A1%88%E4%BE%8B/1.htm">实战案例</a> <div>引言在当今信息爆炸的时代,互联网上充斥着海量的用户言论和观点。了解舆论风向对于企业、政府机构以及研究者等具有重要的意义,可以帮助他们及时把握公众情绪、调整策略与决策。Python作为一种强大的编程语言,在数据爬取与分析方面具有得天独厚的优势,能够助力我们高效地实现舆情监测与深入剖析。一、环境搭建与目标确定1.环境搭建为了顺利完成爬虫与数据分析任务,首先需要确保你的开发环境已经安装了以下Python</div> </li> <li><a href="/article/1892483331132551168.htm" title="最新版AndroidStudio踩坑(新建项目无法正常运行)" target="_blank">最新版AndroidStudio踩坑(新建项目无法正常运行)</a> <span class="text-muted">沙漠蓝色披头</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/studio/1.htm">studio</a> <div>2023.7.20日雨今天花了六个小时才搞定新版AS创建app应用并可以运行,所以记录一下as版本是:AndroidStudioFlamingo|2022.2.1Patch2新建一个app应用,结果gradle一直下载不下来,提示connectrefuse,如果你配置了代理,建议设置为无代理同时要记得把.gradle/gradle.properties里面相关的代理设置给清除了,如果设置了代理的话</div> </li> <li><a href="/article/1892480683775946752.htm" title="YOLOv8 Pose使用RKNN进行推理" target="_blank">YOLOv8 Pose使用RKNN进行推理</a> <span class="text-muted">い不靠譜︶朱Sir</span> <a class="tag" taget="_blank" href="/search/%E5%AE%9E%E7%94%A8%E9%A1%B9%E7%9B%AE%E9%83%A8%E7%BD%B2/1.htm">实用项目部署</a><a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/pip/1.htm">pip</a> <div>关注微信公众号:朱sir的小站,发送202411081即可免费获取源代码下载链接一、简单介绍YOLOv8-Pose是一种基于YOLOv8架构的姿态估计模型,能够识别图像中的关键点位置,这些关键点通常表示人体的关节、特征点或其他显著位置。该模型在COCO关键点数据集上训练,适合多种姿势估计任务。二、ONNX推理1.首先需要先将Pytorch模型转换为Onnx模型,下载pt模型这里给出官方的权重下载地</div> </li> <li><a href="/article/1892480051669168128.htm" title="PyCharm 集成 DeepSeek:本地运行 or API 直连?打造你的 AI 编程神器!" target="_blank">PyCharm 集成 DeepSeek:本地运行 or API 直连?打造你的 AI 编程神器!</a> <span class="text-muted">AI云极</span> <a class="tag" taget="_blank" href="/search/%E3%80%90AI%E6%99%BA%E8%83%BD%E7%B3%BB%E5%88%97%E3%80%91/1.htm">【AI智能系列】</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/deepseek/1.htm">deepseek</a> <div>在AI赋能编程的时代,如何让AI辅助写代码,提升开发效率?DeepSeek作为一款开源、强大、免费的AI编程助手,结合PyCharm,能够大幅提升Python编程体验。今天,我们就来详细讲解如何在PyCharm中接入DeepSeek,无论你想使用本地部署的DeepSeek,还是官方API版本,都能轻松实现!为什么选择DeepSeek+PyCharm?DeepSeekR1采用6710亿参数的MoE(</div> </li> <li><a href="/article/1892480052910682112.htm" title="Python3.5源码分析-sys模块及site模块导入" target="_blank">Python3.5源码分析-sys模块及site模块导入</a> <span class="text-muted">小屋子大侠</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/Python%E5%88%86%E6%9E%90/1.htm">Python分析</a><a class="tag" taget="_blank" href="/search/python%E6%BA%90%E7%A0%81/1.htm">python源码</a> <div>Python3源码分析本文环境python3.5.2。参考书籍>python官网Python3的sys模块初始化根据分析完成builtins初始化后,继续分析sys模块的初始化,继续分析_Py_InitializeEx_Private函数的执行,void_Py_InitializeEx_Private(intinstall_sigs,intinstall_importlib){...sysmod=</div> </li> <li><a href="/article/1892478662767341568.htm" title="深入了解 CDN:概念、原理、过程、作用及工作场景" target="_blank">深入了解 CDN:概念、原理、过程、作用及工作场景</a> <span class="text-muted">羊村懒哥</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E9%80%9F%E7%BC%93%E5%AD%98/1.htm">加速缓存</a> <div>目录一、CDN的概念二、CDN的工作原理三、CDN的工作过程四、CDN的作用五、CDN可结合使用的技术六、CDN能够解决的网络问题七、CDN的工作场景在当今互联网飞速发展的时代,用户对于网页加载速度和内容获取的时效性要求越来越高。CDN(ContentDeliveryNetwork,⭐内容分发网络)应运而生,它在提升网络性能和用户体验方面发挥着关键作用。本文将详细介绍CDN的概念、工作原理、工作过</div> </li> <li><a href="/article/1892476394009587712.htm" title="【CUDA】Pytorch_Extensions" target="_blank">【CUDA】Pytorch_Extensions</a> <span class="text-muted">joker D888</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/cuda/1.htm">cuda</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a> <div>【CUDA】Pytorch_Extensions为什么要开发CUDA扩展?当我们在PyTorch中实现自定义算子时,通常有两种选择:使用纯Python实现(简单但效率低)使用C++/CUDA扩展(高效但需要编译)对于计算密集型的操作(如神经网络中的自定义激活函数),使用CUDA扩展可以获得接近硬件极限的性能。本文将以实现一个多项式激活函数x²+x+1为例,展示完整的开发流程。完整CUDA扩展代码解</div> </li> <li><a href="/article/88.htm" title="ztree设置禁用节点" target="_blank">ztree设置禁用节点</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/ztree/1.htm">ztree</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/setDisabledNode/1.htm">setDisabledNode</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>ztree设置禁用节点的时候注意,当使用ajax后台请求数据,必须要设置为同步获取数据,否者会获取不到节点对象,导致设置禁用没有效果。 $(function(){ showTree(); setDisabledNode(); }); </div> </li> <li><a href="/article/215.htm" title="JVM patch by Taobao" target="_blank">JVM patch by Taobao</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a> <div>在网上无意中看到淘宝提交的hotspot patch,共四个,有意思,记录一下。   7050685:jsdbproc64.sh has a typo in the package name 7058036:FieldsAllocationStyle=2 does not work in 32-bit VM 7060619:C1 should respect inline and</div> </li> <li><a href="/article/342.htm" title="将session存储到数据库中" target="_blank">将session存储到数据库中</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/session/1.htm">session</a> <div>CREATE TABLE sessions ( id CHAR(32) NOT NULL, data TEXT, last_accessed TIMESTAMP NOT NULL, PRIMARY KEY (id) );   <?php /** * Created by PhpStorm. * User: michaeldu * Date</div> </li> <li><a href="/article/469.htm" title="Vector" target="_blank">Vector</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/vector/1.htm">vector</a> <div>public Vector<CartProduct> delCart(Vector<CartProduct> cart, String id) { for (int i = 0; i < cart.size(); i++) { if (cart.get(i).getId().equals(id)) { cart.remove(i); </div> </li> <li><a href="/article/596.htm" title="各连接池配置参数比较" target="_blank">各连接池配置参数比较</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">连接池</a> <div>        排版真心费劲,大家凑合看下吧,见谅~     Druid DBCP C3P0 Proxool 数据库用户名称 Username Username User   数据库密码 Password Password Password   驱动名</div> </li> <li><a href="/article/723.htm" title="[简单]mybatis insert语句添加动态字段" target="_blank">[简单]mybatis insert语句添加动态字段</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>      mysql数据库,id自增,配置如下:       <insert id="saveTestTb" useGeneratedKeys="true" keyProperty="id" parameterType=&</div> </li> <li><a href="/article/850.htm" title="struts2拦截器配置" target="_blank">struts2拦截器配置</a> <span class="text-muted">云端月影</span> <a class="tag" taget="_blank" href="/search/struts2%E6%8B%A6%E6%88%AA%E5%99%A8/1.htm">struts2拦截器</a> <div>struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 <struts>     <package name="struts2" extends="struts-default">         &</div> </li> <li><a href="/article/977.htm" title="IE中页面不居中,火狐谷歌等正常" target="_blank">IE中页面不居中,火狐谷歌等正常</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/IE%E4%B8%AD%E9%A1%B5%E9%9D%A2%E4%B8%8D%E5%B1%85%E4%B8%AD/1.htm">IE中页面不居中</a> <div>问题是首页在火狐、谷歌、所有IE中正常显示,列表页的页面在火狐谷歌中正常,在IE6、7、8中都不中,觉得可能那个地方设置的让IE系列都不认识,仔细查看后发现,列表页中没写HTML模板部分没有添加DTD定义,就是<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3</div> </li> <li><a href="/article/1104.htm" title="String,int,Integer,char 几个类型常见转换" target="_blank">String,int,Integer,char 几个类型常见转换</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>如何将字串 String 转换成整数 int? int i = Integer.valueOf(my_str).intValue(); int i=Integer.parseInt(str); 如何将字串 String 转换成Integer ? Integer integer=Integer.valueOf(str); 如何将整数 int 转换成字串 String ? 1.</div> </li> <li><a href="/article/1231.htm" title="PL/SQL的游标类型" target="_blank">PL/SQL的游标类型</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/%E6%98%BE%E7%A4%BA%E6%B8%B8%E6%A0%87%28%E9%9D%99%E6%80%81%E6%B8%B8%E6%A0%87%29/1.htm">显示游标(静态游标)</a><a class="tag" taget="_blank" href="/search/%E9%9A%90%E5%BC%8F%E6%B8%B8%E6%A0%87/1.htm">隐式游标</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%A0%87%E7%9A%84%E6%9B%B4%E6%96%B0%E5%92%8C%E5%88%A0%E9%99%A4/1.htm">游标的更新和删除</a><a class="tag" taget="_blank" href="/search/%25rowtype/1.htm">%rowtype</a><a class="tag" taget="_blank" href="/search/ref%E6%B8%B8%E6%A0%87%28%E5%8A%A8%E6%80%81%E6%B8%B8%E6%A0%87%29/1.htm">ref游标(动态游标)</a> <div>游标是oracle中的一个结果集,用于存放查询的结果;   PL/SQL中游标的声明; 1,声明游标 2,打开游标(默认是关闭的); 3,提取数据 4,关闭游标     注意的要点:游标必须声明在declare中,使用open打开游标,fetch取游标中的数据,close关闭游标   隐式游标:主要是对DML数据的操作隐</div> </li> <li><a href="/article/1358.htm" title="JUnit4中@AfterClass @BeforeClass @after @before的区别对比" target="_blank">JUnit4中@AfterClass @BeforeClass @after @before的区别对比</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JUnit4/1.htm">JUnit4</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>一.基础知识 JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)@After:释放资源  对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次</div> </li> <li><a href="/article/1485.htm" title="精通Oracle10编程SQL(12)开发包" target="_blank">精通Oracle10编程SQL(12)开发包</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>/* *开发包 *包用于逻辑组合相关的PL/SQL类型(例如TABLE类型和RECORD类型)、PL/SQL项(例如游标和游标变量)和PL/SQL子程序(例如过程和函数) */ --包用于逻辑组合相关的PL/SQL类型、项和子程序,它由包规范和包体两部分组成 --建立包规范:包规范实际是包与应用程序之间的接口,它用于定义包的公用组件,包括常量、变量、游标、过程和函数等 --在包规</div> </li> <li><a href="/article/1612.htm" title="【EhCache二】ehcache.xml配置详解" target="_blank">【EhCache二】ehcache.xml配置详解</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/ehcache.xml/1.htm">ehcache.xml</a> <div>在ehcache官网上找了多次,终于找到ehcache.xml配置元素和属性的含义说明文档了,这个文档包含在ehcache.xml的注释中! ehcache.xml : http://ehcache.org/ehcache.xml ehcache.xsd : http://ehcache.org/ehcache.xsd ehcache配置文件的根元素是ehcahe   ehcac</div> </li> <li><a href="/article/1739.htm" title="java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL" target="_blank">java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a> <div>今天学习spring+cxf的时候遇到一个问题:在web.xml中配置了spring的上下文监听器: <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>  随后启动</div> </li> <li><a href="/article/1866.htm" title="angular.element" target="_blank">angular.element</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a><a class="tag" taget="_blank" href="/search/angular.element/1.htm">angular.element</a> <div>angular.element 描述:     包裹着一部分DOM element或者是HTML字符串,把它作为一个jQuery元素来处理。(类似于jQuery的选择器啦)     如果jQuery被引入了,则angular.element就可以看作是jQuery选择器,选择的对象可以使用jQuery的函数;如果jQuery不可用,angular.e</div> </li> <li><a href="/article/1993.htm" title="java-给定两个已排序序列,找出共同的元素。" target="_blank">java-给定两个已排序序列,找出共同的元素。</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CommonItemInTwoSortedArray { /** * 题目:给定两个已排序序列,找出共同的元素。 * 1.定义两个指针分别指向序列的开始。 * 如果指向的两个元素</div> </li> <li><a href="/article/2120.htm" title="sftp 异常,有遇到的吗?求解" target="_blank">sftp 异常,有遇到的吗?求解</a> <span class="text-muted">Chen.H</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jcraft/1.htm">jcraft</a><a class="tag" taget="_blank" href="/search/auth/1.htm">auth</a><a class="tag" taget="_blank" href="/search/jsch/1.htm">jsch</a><a class="tag" taget="_blank" href="/search/jschexception/1.htm">jschexception</a> <div>com.jcraft.jsch.JSchException: Auth cancel at com.jcraft.jsch.Session.connect(Session.java:460) at com.jcraft.jsch.Session.connect(Session.java:154) at cn.vivame.util.ftp.SftpServerAccess.connec</div> </li> <li><a href="/article/2247.htm" title="[生物智能与人工智能]神经元中的电化学结构代表什么?" target="_blank">[生物智能与人工智能]神经元中的电化学结构代表什么?</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>     我这里做一个大胆的猜想,生物神经网络中的神经元中包含着一些化学和类似电路的结构,这些结构通常用来扮演类似我们在拓扑分析系统中的节点嵌入方程一样,使得我们的神经网络产生智能判断的能力,而这些嵌入到节点中的方程同时也扮演着"经验"的角色....      我们可以尝试一下...在某些神经</div> </li> <li><a href="/article/2374.htm" title="通过LAC和CID获取经纬度信息" target="_blank">通过LAC和CID获取经纬度信息</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/lac/1.htm">lac</a><a class="tag" taget="_blank" href="/search/cid/1.htm">cid</a> <div>方法1: 用浏览器打开http://www.minigps.net/cellsearch.html,然后输入lac和cid信息(mcc和mnc可以填0),如果数据正确就可以获得相应的经纬度 方法2: 发送HTTP请求到http://www.open-electronics.org/celltrack/cell.php?hex=0&lac=<lac>&cid=&</div> </li> <li><a href="/article/2501.htm" title="JAVA的困难分析" target="_blank">JAVA的困难分析</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>前段时间转了一篇SQL的文章(http://datamachine.iteye.com/blog/1971896),文章不复杂,但思想深刻,就顺便思考了一下java的不足,当砖头丢出来,希望引点和田玉。   -----------------------------------------------------------------------------------------</div> </li> <li><a href="/article/2628.htm" title="小学5年级英语单词背诵第二课" target="_blank">小学5年级英语单词背诵第二课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>money 钱 paper 纸 speak 讲,说 tell 告诉   remember 记得,想起 knock 敲,击,打 question 问题 number 数字,号码   learn 学会,学习 street 街道 carry 搬运,携带 send 发送,邮寄,发射   must 必须 light 灯,光线,轻的 front </div> </li> <li><a href="/article/2755.htm" title="linux下面没有tree命令" target="_blank">linux下面没有tree命令</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>centos p安装 yum -y install tree   mac os安装 brew install tree   首先来看tree的用法 tree 中文解释:tree 功能说明:以树状图列出目录的内容。 语  法:tree [-aACdDfFgilnNpqstux][-I <范本样式>][-P <范本样式</div> </li> <li><a href="/article/2882.htm" title="Map迭代方式,Map迭代,Map循环" target="_blank">Map迭代方式,Map迭代,Map循环</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/Map%E5%BE%AA%E7%8E%AF/1.htm">Map循环</a><a class="tag" taget="_blank" href="/search/Map%E8%BF%AD%E4%BB%A3/1.htm">Map迭代</a><a class="tag" taget="_blank" href="/search/Map%E8%BF%AD%E4%BB%A3%E6%96%B9%E5%BC%8F/1.htm">Map迭代方式</a> <div>Map迭代方式,Map迭代,Map循环   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年</div> </li> <li><a href="/article/3009.htm" title="Spring Cache注解+Redis" target="_blank">Spring Cache注解+Redis</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>Spring3.1 Cache注解  依赖jar包: <!-- redis --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> </div> </li> <li><a href="/article/3136.htm" title="Guava中针对集合的 filter和过滤功能" target="_blank">Guava中针对集合的 filter和过滤功能</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/filter/1.htm">filter</a> <div>在guava库中,自带了过滤器(filter)的功能,可以用来对collection 进行过滤,先看例子:    @Test public void whenFilterWithIterables_thenFiltered() { List<String> names = Lists.newArrayList("John"</div> </li> <li><a href="/article/3263.htm" title="学习编程那点事" target="_blank">学习编程那点事</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a> <div>一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧! 接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去</div> </li> <li><a href="/article/3390.htm" title="架构师之流处理---------bytebuffer的mark,limit和flip" target="_blank">架构师之流处理---------bytebuffer的mark,limit和flip</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/ByteBuffer/1.htm">ByteBuffer</a> <div>1.前言。   如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。 2.例子. 例子代码: String str = "helloWorld"; ByteBuffer buff = ByteBuffer.wrap(str.getBytes()); Sy</div> </li> <li><a href="/article/3517.htm" title="org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1" target="_blank">org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, column 1</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/%24/1.htm">$</a><a class="tag" taget="_blank" href="/search/%E8%BD%AC%E4%B9%89/1.htm">转义</a><a class="tag" taget="_blank" href="/search/el%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">el表达式</a> <div>最近在做Highcharts的过程中,在写js时,出现了以下异常:   严重: Servlet.service() for servlet jsp threw exception org.apache.el.parser.ParseException: Encountered " ":" ": "" at line 1, </div> </li> <li><a href="/article/3644.htm" title="用Java实现发送邮件到163" target="_blank">用Java实现发送邮件到163</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/java%E5%AE%9E%E7%8E%B0/1.htm">java实现</a> <div>/* 在java版经常看到有人问如何用javamail发送邮件?如何接收邮件?如何访问多个文件夹等。问题零散,而历史的回复早已经淹没在问题的海洋之中。 本人之前所做过一个java项目,其中包含有WebMail功能,当初为用java实现而对javamail摸索了一段时间,总算有点收获。看到论坛中的经常有此方面的问题,因此把我的一些经验帖出来,希望对大家有些帮助。 此篇仅介绍用</div> </li> <li><a href="/article/3771.htm" title="探索实体类存在的真正意义" target="_blank">探索实体类存在的真正意义</a> <span class="text-muted">java小叶檀</span> <a class="tag" taget="_blank" href="/search/POJO/1.htm">POJO</a> <div>一. 实体类简述    实体类其实就是俗称的POJO,这种类一般不实现特殊框架下的接口,在程序中仅作为数据容器用来持久化存储数据用的 POJO(Plain Old Java Objects)简单的Java对象   它的一般格式就是 public class A{ private String id; public Str</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>