Python之BeautifulSoup库详解

一、简介

BeautifulSoup是一个灵活方便的网页解析库,处理高效,能够自动的将输入文档转换为Unicode编码,输出文档转换为utf-8编码,且支持多种解析器。其最主要的功能是从网页抓取数据。

二、解析器

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup, ‘html.parser’) python内置的标准库,执行速度适中 Python3.2.2之前的版本容错能力差
lxml HTML解析器 BeautifulSoup(markup, ‘lxml’) 速度快、文档容错能力强 需要安装C语言库
lxml XML解析器 BeautifulSoup(markup ‘xml’) 速度快,唯一支持XML的解析器 需要安装C语言库
html5lib BeautifulSoup(markup, ‘html5lib’) 最好的容错性、以浏览器的方式解析文档、生成HTML5格式的文档 速度慢,不依赖外部拓展

三、基本使用步骤

3.1 获取网页源码也可以通过字符串自己构建一个网页的源码

# 给请求指定一个请求头来模拟chrome浏览器
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36'}
# 爬图地址
addr = 'https://sc.chinaz.com/tupian/'

def getHtmlSource():
	# 使用请求头来模拟chrome浏览器访问网页,获取页面响应结果
    res = requests.get(addr, headers=headers).text
    print(res)

requests.get().text返回的是Unicode型的数据,requests.get().content返回的是bytes型的数据。如果只是使用.text来获取页面源码的话,获取的源码中中文会乱码。可以使用一下方法解决中文乱码:
(1)手动指定页面编码

    res = requests.get(addr, headers=headers)
    res.encoding = 'UTF-8'
    html_doc = res.text

(2)使用.content方法

    html_doc = str(requests.get(addr, headers=headers).content, 'UTF-8')

3.2 使用解析器解析页面响应结果

# 使用自带的html.parser解析页面响应结果
soup = BeautifulSoup(html_doc, 'html.parser')
# 使用lxml HTML解析器解析页面响应结果
soup = BeautifulSoup(html_doc, 'lxml')
# 使用lxml XML解析器解析页面响应结果
soup = BeautifulSoup(html_doc, 'xml')
# 使用html5lib解析页面响应结果
soup = BeautifulSoup(html_doc, 'html5lib')

四、四大对象种类

Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

4.1 Tag

Tag 通俗点讲就是 HTML 中的一个个标签,例如:titleheadap等等 HTML 标签加上里面包括的内容就是 Tag。但是注意,它查找的是在所有内容中的第一个符合要求的标签。

# 创建BeautifulSoup对象
soup = BeautifulSoup(html_doc, 'html.parser')
# 通过Tag对象获取title标签信息
print(soup.title)
## 图片、图片下载、高清图片材

# 通过Tag对象获取a标签信息
print(soup.a)
## 

Tag 它有两个重要的属性,是 name 和 attrs。
(1) name: 输出标签的标签类型名:

print(soup.title.name)
# title
print(soup.p.name)
# p

(2) attrs: 以字典的形式获取标签的属性:

 # 获取标签的所有属性
 soup.p.attrs
 # 获取标签的某个属性
 soup.p.attrs['js-do']
 soup.p.get('js-do')	
 # 修改标签的属性
 soup.p.attrs['js-do'] = 'newContenct'
 # 删除标签的属性
 del soup.p.attrs['js-do']

4.2 NavigableString

注意作用是为了获取标签内部的文字。

# 获取标签内部文字
print(soup.title.string)

4.3 BeautifulSoup

BeautifulSoup 对象表示的是一个文档的内容。大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们也可以获取它的属性及名称。

# 获取BeautifulSoup对象名称
print(soup.name)
# 获取BeautifulSoup对象属性
print(soup.attr)

4.4 Comment

Comment 对象是一个特殊类型的 NavigableString 对象,如果标签内部的内容是注释,其输出的内容不包括注释符号。

print(soup.a)
## 
print(soup.a.string)
## zhushi
print(type(soup.a.string))
## 

五、搜索文档树

find(name, attrs, recursive, string, **kwargs):获取匹配的第一个标签;
find_all(name, attrs, recursive, string, limit, **kwargs) :返回结果是值包含一个元素的列表;

  • name:是根据标签的名称进行匹配,name的值相当于过滤条件,可以是一个具体的标签名,多个标签名组成的列表,或者是一个正在表达式,甚至是函数方法等等。
  • attrs:是根据标签的属性进行匹配。
  • recursive:是否递归搜索,默认为True,会搜索当前tag的所有子孙节点,设置为False,则只搜索儿子节点。
  • string:是根据标签的文本内容去匹配。
  • limit:设置查询的结果数量。
  • kwargs:也是根据标签的属性进行匹配,与attrs的区别在于写法不一样,且属性的key不能是保留字,也不能与其他参数名相同。

5.1 使用name进行匹配

# 查找所有的标签
soup.find_all(name="a") # 可以简写成 soup.find_all("a")

# 查找所有的标签或者<link>标签</span>
soup.find_all<span class="token punctuation">(</span>name<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'title'</span>, <span class="token string">'link'</span><span class="token punctuation">}</span><span class="token punctuation">)</span> <span class="token comment"># 可以简写成 soup.find_all(['title', 'link']) </span>

<span class="token comment"># 查找所有以a开头的标签</span>
soup.find_all<span class="token punctuation">(</span>name<span class="token operator">=</span>re.compile<span class="token punctuation">(</span><span class="token string">"^a"</span><span class="token punctuation">))</span> <span class="token comment"># 可以简写成 soup.find_all(re.compile("^a")) </span>

<span class="token comment"># 查找有class属性并且没有id属性的节点</span>
soup.find_all<span class="token punctuation">(</span>hasClassNoId<span class="token punctuation">)</span>
def hasClassNoId<span class="token punctuation">(</span>tag<span class="token punctuation">)</span>:
    <span class="token builtin class-name">return</span> tag.has_attr<span class="token punctuation">(</span><span class="token string">'class'</span><span class="token punctuation">)</span> and not tag.has_attr<span class="token punctuation">(</span><span class="token string">'id'</span><span class="token punctuation">)</span>
    
<span class="token comment"># 查找body里面所有标签</span>
soup.find<span class="token punctuation">(</span><span class="token string">'body'</span><span class="token punctuation">)</span>.find_all<span class="token punctuation">(</span>True<span class="token punctuation">)</span>
</code></pre> 
  <h4>5.2 使用attrs进行匹配</h4> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找所有name属性值为tb_name的标签</span>
soup.find_all<span class="token punctuation">(</span>attrs<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">"name"</span><span class="token builtin class-name">:</span> <span class="token string">"tb_name"</span><span class="token punctuation">}</span><span class="token punctuation">)</span>

<span class="token comment"># 查找所有id属性值为id_attr1或者id_attr2的标签</span>
soup.find_all<span class="token punctuation">(</span>attrs<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'id'</span><span class="token builtin class-name">:</span> <span class="token punctuation">[</span><span class="token string">'id_attr1'</span>, <span class="token string">'id_attr2'</span><span class="token punctuation">]</span><span class="token punctuation">}</span><span class="token punctuation">)</span>

<span class="token comment"># 查找id属性值中含有id_的所有标签</span>
soup.find_all<span class="token punctuation">(</span>attrs<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'id'</span>:re.compiles<span class="token punctuation">(</span><span class="token string">'id_'</span><span class="token punctuation">)</span><span class="token punctuation">}</span><span class="token punctuation">)</span>

<span class="token comment"># 查找含有id属性的所有tag</span>
soup.find_all<span class="token punctuation">(</span>attrs<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'id'</span>:True<span class="token punctuation">}</span><span class="token punctuation">)</span>

<span class="token comment"># 查找href属性值中以.html结尾的所有标签</span>
soup.find_all<span class="token punctuation">(</span>attrs<span class="token operator">=</span><span class="token punctuation">{</span><span class="token string">'href'</span><span class="token builtin class-name">:</span> search_html<span class="token punctuation">}</span><span class="token punctuation">)</span>
def search_html<span class="token punctuation">(</span>attr<span class="token punctuation">)</span>:
    <span class="token builtin class-name">return</span> attr and attr.lower<span class="token punctuation">(</span><span class="token punctuation">)</span>.endswith<span class="token punctuation">(</span><span class="token string">'.html'</span><span class="token punctuation">)</span>
</code></pre> 
  <h4>5.3 使用kwargs进行匹配</h4> 
  <p><code>也是通过标签的属性进行匹配,需要特别注意的是name属性以及class属性,name属于与find_all方法的第一个参数名相同,这里使用name='属性值'进行查询的话,如果是一个参数会与标签名进行匹配,如果是多个参数,则方法会报错;而class是python的保留字,使用class属性进行匹配的时候需要写成class_='属性值'的方式</code></p> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找<div>中name属性值是backpage的所有标签</span>
soup.find_all<span class="token punctuation">(</span><span class="token string">'div'</span>, <span class="token assign-left variable">name</span><span class="token operator">=</span><span class="token string">'backpage'</span><span class="token punctuation">)</span>  <span class="token comment">## 会报错</span>

<span class="token comment"># 查找class属性值是backpage的所有标签</span>
soup.find_all<span class="token punctuation">(</span>class_<span class="token operator">=</span><span class="token string">'backpage'</span><span class="token punctuation">)</span>

<span class="token comment"># 查找所有id属性值为id_attr1或者id_attr2的标签</span>
soup.find_all<span class="token punctuation">(</span>id<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">'id_attr1'</span>, <span class="token string">'id_attr2'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

<span class="token comment"># 查找href的属性值包含.html的所有的标签</span>
soup.find_all<span class="token punctuation">(</span>href<span class="token operator">=</span>re.compile<span class="token punctuation">(</span><span class="token string">'.html'</span><span class="token punctuation">))</span>

<span class="token comment"># 查找含有id属性的所有tag</span>
soup.find_all<span class="token punctuation">(</span>id<span class="token operator">=</span>True<span class="token punctuation">)</span>

<span class="token comment"># 查找href属性值中以.html结尾的所有标签</span>
soup.find_all<span class="token punctuation">(</span>href<span class="token operator">=</span> search_html<span class="token punctuation">)</span>
def search_html<span class="token punctuation">(</span>attr<span class="token punctuation">)</span>:
    <span class="token builtin class-name">return</span> attr and attr.lower<span class="token punctuation">(</span><span class="token punctuation">)</span>.endswith<span class="token punctuation">(</span><span class="token string">'.html'</span><span class="token punctuation">)</span>
</code></pre> 
  <h4>5.4 使用string进行匹配</h4> 
  <p><code>需要注意的是这里返回标签的值,如果需要获取到对应的标签,可以使用previous_element属性来获得</code></p> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找标签的value是'上一页'的所有value值</span>
soup.find_all<span class="token punctuation">(</span>string<span class="token operator">=</span><span class="token string">'上一页'</span><span class="token punctuation">)</span>

<span class="token comment"># 查找标签的value是'上一页'的所有标签</span>
<span class="token punctuation">[</span>value.previous_element <span class="token keyword">for</span> <span class="token for-or-select variable">value</span> <span class="token keyword">in</span> soup.find_all<span class="token punctuation">(</span>string<span class="token operator">=</span><span class="token string">'上一页'</span><span class="token punctuation">)</span><span class="token punctuation">]</span>

<span class="token comment"># 查找value是'上一页'或者'下一页'的所有value值</span>
soup.find_all<span class="token punctuation">(</span>string<span class="token operator">=</span><span class="token punctuation">[</span><span class="token string">'上一页'</span>,<span class="token string">'下一页'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>

<span class="token comment"># 查找value中存在'页'的所有value值</span>
soup.find_all<span class="token punctuation">(</span>string<span class="token operator">=</span>re.compile<span class="token punctuation">(</span><span class="token string">'页'</span><span class="token punctuation">))</span>

<span class="token comment"># 查找在value值的所有的string</span>
soup.find_all<span class="token punctuation">(</span>string<span class="token operator">=</span>True<span class="token punctuation">)</span>

<span class="token comment"># 查找所有value值是以'页'为结尾的value值</span>
soup.find_all<span class="token punctuation">(</span>string<span class="token operator">=</span>search_string<span class="token punctuation">)</span>
def search_string<span class="token punctuation">(</span>string<span class="token punctuation">)</span>:
    <span class="token builtin class-name">return</span> string and string.lower<span class="token punctuation">(</span><span class="token punctuation">)</span>.endswith<span class="token punctuation">(</span><span class="token string">'页'</span><span class="token punctuation">)</span>
</code></pre> 
  <h3>六、遍历文档树</h3> 
  <ul> 
   <li><code>contents</code>:返回的是一个包含所有儿子节点的列表。</li> 
   <li><code>children</code>:返回的是一个包含所有儿子节点的迭代器。</li> 
   <li><code>descendants</code>:返回的是一个包含所有子孙节点的生成器。</li> 
  </ul> 
  <p><strong>contents、children只包含直接儿子节点,descendants既包含儿子节点还包含孙子节点。</strong></p> 
  <h4>6.1 通过contents获取目标节点的所有子节点</h4> 
  <pre><code class="prism language-bash">tag_soup <span class="token operator">=</span> soup.find<span class="token punctuation">(</span><span class="token string">'div'</span>, <span class="token assign-left variable">class_</span><span class="token operator">=</span><span class="token string">'container'</span><span class="token punctuation">)</span>.contents
print<span class="token punctuation">(</span>type<span class="token punctuation">(</span>tag_soup<span class="token punctuation">))</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">t</span> <span class="token keyword">in</span> tag_soup:
	<span class="token keyword">if</span> t <span class="token operator">!=</span> <span class="token string">'\n'</span><span class="token builtin class-name">:</span>  <span class="token comment"># 去掉换行符</span>
		print<span class="token punctuation">(</span>t<span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/6d2d98865445499a92abfc38dcfae2b2.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6d2d98865445499a92abfc38dcfae2b2.jpg" alt="在这里插入图片描述" width="650" height="72"></a></p> 
  <h4>6.2 通过children获取目标节点的所有子节点</h4> 
  <pre><code class="prism language-bash">tag_soup <span class="token operator">=</span> soup.find<span class="token punctuation">(</span><span class="token string">'div'</span>, <span class="token assign-left variable">class_</span><span class="token operator">=</span><span class="token string">'container'</span><span class="token punctuation">)</span>.children
print<span class="token punctuation">(</span>type<span class="token punctuation">(</span>tag_soup<span class="token punctuation">))</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">t</span> <span class="token keyword">in</span> tag_soup:
	<span class="token keyword">if</span> t <span class="token operator">!=</span> <span class="token string">'\n'</span><span class="token builtin class-name">:</span>  <span class="token comment"># 去掉换行符</span>
		print<span class="token punctuation">(</span>t<span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/71c0099e6b9a43a8bdd09538088adcdd.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/71c0099e6b9a43a8bdd09538088adcdd.jpg" alt="在这里插入图片描述" width="650" height="77"></a></p> 
  <h4>6.3 通过descendants获取目标节点的所有子孙节点</h4> 
  <pre><code class="prism language-bash">tag_soup <span class="token operator">=</span> soup.find<span class="token punctuation">(</span><span class="token string">'div'</span>, <span class="token assign-left variable">class_</span><span class="token operator">=</span><span class="token string">'container'</span><span class="token punctuation">)</span>.descendants
print<span class="token punctuation">(</span>type<span class="token punctuation">(</span>tag_soup<span class="token punctuation">))</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">t</span> <span class="token keyword">in</span> tag_soup:
	<span class="token keyword">if</span> t <span class="token operator">!=</span> <span class="token string">'\n'</span><span class="token builtin class-name">:</span>  <span class="token comment"># 去掉换行符</span>
		print<span class="token punctuation">(</span>t<span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/13f7418ac3b949d297df0f9ec7cbfea6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/13f7418ac3b949d297df0f9ec7cbfea6.jpg" alt="Python之BeautifulSoup库详解_第1张图片" width="650" height="118" style="border:1px solid black;"></a></p> 
  <h4>6.4 通过parents获取目标节点的所有祖先节点</h4> 
  <pre><code class="prism language-bash">tag_soup <span class="token operator">=</span> soup.find<span class="token punctuation">(</span><span class="token string">'div'</span>, <span class="token assign-left variable">class_</span><span class="token operator">=</span><span class="token string">'container'</span><span class="token punctuation">)</span>.parents
print<span class="token punctuation">(</span>type<span class="token punctuation">(</span>tag_soup<span class="token punctuation">))</span>
<span class="token keyword">for</span> <span class="token for-or-select variable">t</span> <span class="token keyword">in</span> tag_soup:
	<span class="token keyword">if</span> t <span class="token operator">!=</span> <span class="token string">'\n'</span><span class="token builtin class-name">:</span>  <span class="token comment"># 去掉换行符</span>
		print<span class="token punctuation">(</span>t<span class="token punctuation">)</span>
</code></pre> 
  <h4>6.5 获取目标节点相关联的其他节点</h4> 
  <pre><code class="prism language-bash">a_soup <span class="token operator">=</span> soup.find<span class="token punctuation">(</span><span class="token string">'div'</span>, <span class="token assign-left variable">class_</span><span class="token operator">=</span><span class="token string">'container'</span><span class="token punctuation">)</span>.a  <span class="token comment"># 获取div里面的第一个<a>标签</span>

print<span class="token punctuation">(</span>a_soup.parent<span class="token punctuation">)</span>  <span class="token comment"># 获取<a>标签的父节点</span>

print<span class="token punctuation">(</span>a_soup.next_sibling<span class="token punctuation">)</span>  <span class="token comment"># 获取<a>标签的下一个兄弟节点</span>

print<span class="token punctuation">(</span>a_soup.previous_sibling<span class="token punctuation">)</span>  <span class="token comment"># 获取<a>标签的上一个兄弟节点</span>

print<span class="token punctuation">(</span>a_soup.next_siblings<span class="token punctuation">)</span>  <span class="token comment"># 获取<a>标签下面的所有兄弟节点</span>

print<span class="token punctuation">(</span>a_soup.previous_siblings<span class="token punctuation">)</span>  <span class="token comment"># 获取<a>标签上面的所有兄弟节点</span>
</code></pre> 
  <h3>七、css选择器</h3> 
  <h4>7.1 通过标签名查找</h4> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找所有title标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'title'</span><span class="token punctuation">)</span>

<span class="token comment"># 查找div下的所有input标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'div input'</span><span class="token punctuation">)</span>

<span class="token comment"># 查找html节点下的head节点下的title标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">"html head title"</span><span class="token punctuation">)</span>
</code></pre> 
  <h4>7.2 通过id查找</h4> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找id为id_text的标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">"#id_text"</span><span class="token punctuation">)</span>

<span class="token comment"># 查找id为id_text1、id_text2的标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">"#id_text1, #id_text2"</span><span class="token punctuation">)</span>

<span class="token comment"># 查找id为id_text1的input标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'input#id_text1'</span><span class="token punctuation">)</span>
</code></pre> 
  <h4>7.3 通过类名查找</h4> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找类名为nextpage的标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">".nextpage"</span><span class="token punctuation">)</span>

<span class="token comment"># 查找类名为nextpage、active的标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'.nextpage, .active'</span><span class="token punctuation">)</span>

<span class="token comment"># 查找类名为nextpage的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'a.nextpage'</span><span class="token punctuation">)</span>
</code></pre> 
  <h4>7.4 通过属性查找</h4> 
  <pre><code class="prism language-bash"><span class="token comment"># 选择有href属性的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'a[href]'</span><span class="token punctuation">)</span>

<span class="token comment"># 选择href属性为index_2.html的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'a[href="index_2.html"]'</span><span class="token punctuation">)</span>

<span class="token comment"># 选择href以index开头的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'a[href^="index"]'</span><span class="token punctuation">)</span>

<span class="token comment"># 选择href以html结尾的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'a[href$="html"]'</span><span class="token punctuation">)</span>

<span class="token comment"># 选择href属性包含index的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">'a[href*="index"]'</span><span class="token punctuation">)</span>
</code></pre> 
  <h4>7.5 其他选择器</h4> 
  <pre><code class="prism language-bash"><span class="token comment"># 查找div标签下的a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">"div > a"</span><span class="token punctuation">)</span>

<span class="token comment"># 父节点中的第3个a标签</span>
soup.select<span class="token punctuation">(</span><span class="token string">"a:nth-of-type(3)"</span><span class="token punctuation">)</span>

<span class="token comment"># a标签之后的input标签(a和input有共同父节点)</span>
soup.select<span class="token punctuation">(</span><span class="token string">"a~input"</span><span class="token punctuation">)</span>
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1648026377691107328"></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/1834808355558879232.htm"
                           title="python--排错--AttributeError: 'str' object has no attribute 'decode',关于python3的字符串" target="_blank">python--排错--AttributeError: 'str' object has no attribute 'decode',关于python3的字符串</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/%E6%8E%92%E9%94%99%E8%AE%B0%E5%BD%95/1.htm">排错记录</a>
                        <div>AttributeError:'str'objecthasnoattribute'decode'一般是因为str的类型本身不是bytes,所以不能解码两个概念:普通str:可理解的语义字节流str(bytes)(0101010101,可视化显示)两个语法Encode:把普通字符串转为机器可识别的bytesDecode:把bytes转为字符串两个差异Python3的str默认不是bytes,所以不能</div>
                    </li>
                    <li><a href="/article/1834807218839580672.htm"
                           title="Python数据分析之股票信息可视化实现matplotlib" target="_blank">Python数据分析之股票信息可视化实现matplotlib</a>
                        <span class="text-muted">Blogfish</span>
<a class="tag" taget="_blank" href="/search/Python3/1.htm">Python3</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">可视化</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a>
                        <div>今天学习爬虫技术数据分析对于股票信息的分析及结果呈现,目标是实现对股票信息的爬取并对数据整理后,生成近期成交量折线图。首先,做这个案例一定要有一个明确的思路。知道要干啥,知道用哪些知识,有些方法我也记不住百度下知识库很强大,肯定有答案。有思路以后准备对数据处理,就是几个方法使用了。接口地址参考:Tushare数据涉及知识库:tushare-一个财经数据开放接口;pandas-实现将数据整理为表格,</div>
                    </li>
                    <li><a href="/article/1834804218410659840.htm"
                           title="用 Python 写网络编程(三)" target="_blank">用 Python 写网络编程(三)</a>
                        <span class="text-muted">TesterHome</span>

                        <div>本文在2021.02.14首发于TesterHome社区,作者是资深游戏测试开发工程师陈子昂。用Python写网络编程共四篇,今天给大家分享其中第三篇。原文链接:https://testerhome.com/topics/27910前言今天是一个特别的节日,1946年情人节,世界上第一台计算机ENIAC在米国的宾夕法尼亚大学被new了,标志着新的时代到来。计算机陪伴人类已经走过了75个年头,所以今</div>
                    </li>
                    <li><a href="/article/1834802053252214784.htm"
                           title="AttributeError: ‘str’ object has no attribute ‘get’" target="_blank">AttributeError: ‘str’ object has no attribute ‘get’</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><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</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/numpy/1.htm">numpy</a>
                        <div>【Python】成功解决AttributeError:‘str’objecthasnoattribute‘get’在Python编程中,遇到AttributeError是一个常见的错误,它通常表明你尝试访问的对象不具备你正在调用的属性或方法。当错误信息为“AttributeError:‘str’objecthasnoattribute‘get’”时,这通常意味着你错误地将一个字符串(str)对象当</div>
                    </li>
                    <li><a href="/article/1834793356543225856.htm"
                           title="由于篇幅和复杂性限制,我无法在这里直接为你提供一个完整的、用多种编程语言实现的购物商城代码。但是,我可以为你概述如何使用几种流行的编程语言(如Python, JavaScript/Node.js, J" target="_blank">由于篇幅和复杂性限制,我无法在这里直接为你提供一个完整的、用多种编程语言实现的购物商城代码。但是,我可以为你概述如何使用几种流行的编程语言(如Python, JavaScript/Node.js, J</a>
                        <span class="text-muted">NewmanEdwarda2</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>Python(后端,使用Flask或Django)Flask示例(后端API)gjijg.compythonfromflaskimportFlask,request,jsonifyapp=Flask(name)假设的数据库商品列表products=[{“id”:1,“name”:“苹果”,“price”:10.0},{“id”:2,“name”:“香蕉”,“price”:5.0},]@app.ro</div>
                    </li>
                    <li><a href="/article/1834792978640629760.htm"
                           title="由于篇幅限制,我无法为每种编程语言都提供一个完整的游戏商城代码,但我可以为你提供几种常见编程语言的示例代码片段或概念性指导。" target="_blank">由于篇幅限制,我无法为每种编程语言都提供一个完整的游戏商城代码,但我可以为你提供几种常见编程语言的示例代码片段或概念性指导。</a>
                        <span class="text-muted">NewmanEdwarda2</span>
<a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a>
                        <div>Python(使用Flask框架)yctsy.cnFlaskApp结构pythonfromflaskimportFlask,render_template,requestapp=Flask(name)假设有一个数据库或列表来存储商品games=[{“id”:1,“name”:“Game1”,“price”:9.99},#…其他游戏]@app.route(‘/’)defhome():returnre</div>
                    </li>
                    <li><a href="/article/1834792978158284800.htm"
                           title="由于生成一个完整的游戏商城代码涉及很多细节和复杂性,我无法在这里直接给出完整的代码示例。但是,我可以为你提供一个简化版的游戏商城核心功能的概念性代码,用几种不同的编程语言来展示。" target="_blank">由于生成一个完整的游戏商城代码涉及很多细节和复杂性,我无法在这里直接给出完整的代码示例。但是,我可以为你提供一个简化版的游戏商城核心功能的概念性代码,用几种不同的编程语言来展示。</a>
                        <span class="text-muted">NewmanEdwarda2</span>
<a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a>
                        <div>Python(伪代码)pythonclassGame:definit(self,name,price):tcjmbj.cnself.name=nameself.price=priceclassGameStore:definit(self):self.games=[]defadd_game(self,game):self.games.append(game)defbuy_game(self,game</div>
                    </li>
                    <li><a href="/article/1834792599198724096.htm"
                           title="深入解读《Python之禅》:用实战代码诠释Python编程哲学20240914" target="_blank">深入解读《Python之禅》:用实战代码诠释Python编程哲学20240914</a>
                        <span class="text-muted">Narutolxy</span>
<a class="tag" taget="_blank" href="/search/Python%E7%AC%94%E8%AE%B0/1.htm">Python笔记</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E5%B9%B2%E8%B4%A7%E5%88%86%E4%BA%AB/1.htm">技术干货分享</a><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之禅》:用实战代码诠释Python编程哲学《Python之禅》(TheZenofPython)是Python语言的设计哲学,由TimPeters总结,包含了19条简洁而深刻的格言。当你在Python解释器中输入importthis时,这些格言便会展现在你的眼前。它们不仅仅是简单的句子,更是指导Python程序员编写优雅、简洁、可读代码的准则。本文将结合实际的最佳实践代码,逐条</div>
                    </li>
                    <li><a href="/article/1834791969054879744.htm"
                           title="Java 基于 SpringBoot+vue 的大学生科创项目在线管理系统(附源码)" target="_blank">Java 基于 SpringBoot+vue 的大学生科创项目在线管理系统(附源码)</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%AD%A6%E7%94%9F%E7%A7%91%E5%88%9B%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F/1.htm">大学生科创项目管理系统</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%AD%A6%E7%94%9F%E7%A7%91%E5%88%9B%E9%A1%B9%E7%9B%AE/1.htm">大学生科创项目</a>
                        <div>博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文末获取源码联系精彩专栏推荐订阅不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅Java项目精品实战案例《100套》Java微信小程序项目实战《100套》Python项目实战《100套》</div>
                    </li>
                    <li><a href="/article/1834786423614566400.htm"
                           title="【Python】解决Python报错:AttributeError: ‘str‘ object has no attribute ‘xxx‘" target="_blank">【Python】解决Python报错:AttributeError: ‘str‘ object has no attribute ‘xxx‘</a>
                        <span class="text-muted">I'mAlex</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报错:AttributeError:‘str‘objecthasnoattribute‘xxx‘。AttributeError:'str'objecthasnoattribute'xxx'错误发生的常见原因包括:1.属性不存在:尝试访问字符串类型对象中不存在的属性。2.变量类型混淆:试图访问的变量在程序运行过程中,本应是另一种对象类型,但却意外地变成了str类型。3.类型转换错</div>
                    </li>
                    <li><a href="/article/1834784786061815808.htm"
                           title="【Python技术学习】- 如何搭建一个爬虫代理服务?" target="_blank">【Python技术学习】- 如何搭建一个爬虫代理服务?</a>
                        <span class="text-muted">xiaoli8748_软件开发</span>
<a class="tag" taget="_blank" href="/search/python%E6%8A%80%E6%9C%AF%E5%AD%A6%E4%B9%A0/1.htm">python技术学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>由于之前一直在做爬虫采集相关的开发,这个过程那肯定少不了跟「代理IP」打交道,这篇文章就来记录一下,如何实现一个爬虫代理服务,本篇文章主要以讲解思路为主。起因做过爬虫的人应该都知道,抓的网站和数据多了,如果爬虫抓取速度过快,免不了触发网站的防爬机制。而这些网站应对爬虫的办法,几乎用的同一招就是封IP。那么我们还想稳定、持续地抓取这些网站的数据,如何解决呢?一般解决方案有2个:使用同一个服务器IP抓</div>
                    </li>
                    <li><a href="/article/1834782013412962304.htm"
                           title="python底层原理讲解_python底层原理" target="_blank">python底层原理讲解_python底层原理</a>
                        <span class="text-muted">空蝉于是</span>
<a class="tag" taget="_blank" href="/search/python%E5%BA%95%E5%B1%82%E5%8E%9F%E7%90%86%E8%AE%B2%E8%A7%A3/1.htm">python底层原理讲解</a>
                        <div>有同学问到了一个问题,python中存储变量是通过内存地址来存储,那么python又是如何去判断内存中的地址是什么数据类型的呢。经过查找,找到这篇文章:原博客地址:http://www.cnblogs.com/aashui/p/9871009.html1.Python是如何进行内存管理的?答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制一、对象的引用计数机制Python内部使</div>
                    </li>
                    <li><a href="/article/1834777218480435200.htm"
                           title="Python计算机视觉编程 第三章 图像到图像的映射" target="_blank">Python计算机视觉编程 第三章 图像到图像的映射</a>
                        <span class="text-muted">一只小小程序猿</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a>
                        <div>目录单应性变换直接线性变换算法仿射变换图像扭曲图像中的图像分段仿射扭曲创建全景图RANSAC拼接图像单应性变换单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。在这里,平面是指图像或者三维中的平面表面。单应性变换具有很强的实用性,比如图像配准、图像纠正和纹理扭曲,以及创建全景图像。单应性变换本质上是一种二维到二维的映射,可以将一个平面内的点映射到另一个平面上的对应点。代码如下:impo</div>
                    </li>
                    <li><a href="/article/1834755041479716864.htm"
                           title="unicorn 部署 FastAPI 应用程序" target="_blank">unicorn 部署 FastAPI 应用程序</a>
                        <span class="text-muted">九品神元师</span>
<a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a>
                        <div>本地部署本地开发调试过程中,我通常是这样启动Fastapi服务的在终端中运行:uvicornmain:app--host0.0.0.0--port80当然,也可以python脚本启动:importuvicorn​uvicorn.run(app="main:app",host="0.0.0.0",port=8088,reload=True)这样就好启动一个服务,reload=True支持热重载,方便</div>
                    </li>
                    <li><a href="/article/1834754537571840000.htm"
                           title="从零开始!Jupyter Notebook的安装教程" target="_blank">从零开始!Jupyter Notebook的安装教程</a>
                        <span class="text-muted">yunquantong</span>
<a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>以下是从零开始安装JupyterNotebook的教程,适用于Windows、macOS和Linux系统。1.安装PythonJupyterNotebook需要Python环境。你可以从Python官方网站下载并安装Python。Windows用户:运行安装程序时,请确保勾选“AddPythontoPATH”选项。macOS用户:使用安装程序或通过Homebrew安装(brewinstallpyt</div>
                    </li>
                    <li><a href="/article/1834748359634677760.htm"
                           title="python sanic orm_sanic中使用tortoise-orm" target="_blank">python sanic orm_sanic中使用tortoise-orm</a>
                        <span class="text-muted">Mr浪子相依</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/sanic/1.htm">sanic</a><a class="tag" taget="_blank" href="/search/orm/1.htm">orm</a>
                        <div>#models.pyfromtortoise.modelsimportModelfromtortoiseimportfieldsclassUser(Model):id=fields.IntField(pk=True,,source_field="userID")name=fields.CharField(max_length=100)date_field=fields.DateTimeField(</div>
                    </li>
                    <li><a href="/article/1834746108983734272.htm"
                           title="盘点一个Python网络爬虫抓取股票代码问题(上篇)" target="_blank">盘点一个Python网络爬虫抓取股票代码问题(上篇)</a>
                        <span class="text-muted">皮皮_f075</span>

                        <div>大家好,我是皮皮。一、前言前几天在Python白银群【厚德载物】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。image.png二、实现过程这个问题其实for循环就可以搞定了,看上去粉丝的代码没有带请求头那些,导致获取不到数据。后来【瑜亮老师】、【小王子】给了具体思路,代码如下图所示:image.png后来【小王子】也给了一个具体代码,如下:importrequestsimportt</div>
                    </li>
                    <li><a href="/article/1834739283336982528.htm"
                           title="Django 安装指南" target="_blank">Django 安装指南</a>
                        <span class="text-muted">lly202406</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>Django安装指南Django是一个高级的PythonWeb框架,它鼓励快速开发和干净、实用的设计。本指南将详细介绍如何在不同的操作系统上安装Django,包括Windows、macOS和Linux。在Windows上安装Django先决条件Python:Django要求Python3.8或更高版本。可以从Python官网下载适用于Windows的Python安装程序。pip:Python的包管</div>
                    </li>
                    <li><a href="/article/1834736761796915200.htm"
                           title="从零开始!Jupyter Notebook的安装教程" target="_blank">从零开始!Jupyter Notebook的安装教程</a>
                        <span class="text-muted">109702008</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/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</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><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>GPT-4o(OpenAI)安装JupyterNotebook是一个相对简单的过程,特别是在大多数现代操作系统(如Windows、macOS和Linux)上。以下是详细的步骤指南,从安装Python开始,到JupyterNotebook的使用。步骤1:安装PythonJupyterNotebook需要Python环境。你可以从[Python官网](https://www.python.org/do</div>
                    </li>
                    <li><a href="/article/1834736507508846592.htm"
                           title="python http error 401 解决方案:" target="_blank">python http error 401 解决方案:</a>
                        <span class="text-muted">codeuniverse</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</a><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/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>fromrequests.authimportHTTPBasicAuthuser='myuserID'password="mypassword"ip=sys.argv[1]url="http://www.websites.com/"+ipres=requests.get(url,auth=HTTPBasicAuth(user,password))printres.text</div>
                    </li>
                    <li><a href="/article/1834735876316426240.htm"
                           title="Python 列表(list) sort() 方法" target="_blank">Python 列表(list) sort() 方法</a>
                        <span class="text-muted">编程爱好者9913</span>

                        <div>Python中是没有数组类型的,Python不具有对数组的内置支持,但是可以使用Python列表代替。Python中支持列表和元组。列表比元组好用,因为元组一旦定义就没法修改。而列表不仅可以和数组一样按索引访问,还有一些内置函数方法。本文主要介绍Python列表(list)sort()方法原文地址:Python列表(list)sort()方法</div>
                    </li>
                    <li><a href="/article/1834734615110184960.htm"
                           title="列表排序(Python)" target="_blank">列表排序(Python)</a>
                        <span class="text-muted">TCatTime</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Python%E5%B8%B8%E8%A7%81%E9%A2%98%E7%9B%AE/1.htm">Python常见题目</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E8%A1%A8%E6%8E%92%E5%BA%8F/1.htm">列表排序</a>
                        <div>目录描述解决方案代码代码走读传送门测试用例描述给定以下列表:[{'name':'a','age':20},{'name':'b','age':30},{'name':'c','age':25}]请按照age大小从大到小排序。解决方案使用sorted()函数对列表排序。代码alist=[{'name':'a','age':20},{'name':'b','age':30},{'name':'c','</div>
                    </li>
                    <li><a href="/article/1834732976500469760.htm"
                           title="Cuda 程序编译报错: fatal error: cusparse.h: No such file or directory" target="_blank">Cuda 程序编译报错: fatal error: cusparse.h: No such file or directory</a>
                        <span class="text-muted">原野寻踪</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%9E%E8%B7%B5%E7%BB%8F%E9%AA%8C/1.htm">实践经验</a><a class="tag" taget="_blank" href="/search/cuda/1.htm">cuda</a>
                        <div>编译cuda程序时发现下列报错:/mnt/xxx/miniconda3/envs/xxx/lib/python3.8/site-packages/torch/include/ATen/cuda/CUDAContext.h:6:10:fatalerror:cusparse.h:Nosuchfileordirectory#include^~~~~~~~~~~~检查发现是选择了错误的Cuda版本。ls/</div>
                    </li>
                    <li><a href="/article/1834728941269643264.htm"
                           title="Anaconda版本和Python版本对应关系" target="_blank">Anaconda版本和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/anaconda3/1.htm">anaconda3</a>
                        <div>官网下载地址:https://repo.anaconda.com/archive/下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/anaconda3版本基础python版本Anaconda3-2024.06-1Python3.12.4Anaconda3-2024.02-1Python3.11.7Anaconda3-2023.09</div>
                    </li>
                    <li><a href="/article/1834727300906708992.htm"
                           title="Python 列表 sort()函数使用理解" target="_blank">Python 列表 sort()函数使用理解</a>
                        <span class="text-muted">Echo_3wdiankang</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>
                        <div>目录前言1、升序降序2、sort()和sorted()的区别3、切片排序4、指定排序规则4.1、按字符串长度排序4.2、按第二个字符排序4.3、查找第n大的元素5、其他类型排序总结前言在Python编程的广阔领域中,列表(List)是一种非常基础且强大的数据结构。它允许我们存储多个元素,并按需进行访问、修改和操作。在这些操作中,对列表进行排序是一个常见的需求,而Python的sort()函数正是为</div>
                    </li>
                    <li><a href="/article/1834722887584542720.htm"
                           title="八十多种证件识别接口-JavaScript身份证识别API示例-护照识别-户口页识别" target="_blank">八十多种证件识别接口-JavaScript身份证识别API示例-护照识别-户口页识别</a>
                        <span class="text-muted">翔云API</span>
<a class="tag" taget="_blank" href="/search/api/1.htm">api</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/ocr/1.htm">ocr</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/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>证件识别API包含了身份证识别、护照识别、户口页识别、港澳台来往通行证识别等八十多种证件识别类型,提供了快速、精准的证件信息提取功能,广泛应用于实名认证、机场出入口等场景。仅需上传证件图片,便可快速、精准识别全证面文字信息。python调用身份证识别API:varform=newFormData();form.append("img","/9j");form.append("key","M****</div>
                    </li>
                    <li><a href="/article/1834722888385654784.htm"
                           title="python中的类class" target="_blank">python中的类class</a>
                        <span class="text-muted">weixin_41950276</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>classDog():def__init__(self,name,age):self.name=nameself.age=agedefsit(self):print(self.name.title()+'isnowsitting.')defroll_over(self):print(self.name.title()+'rolledover!')my_dog=Dog('willie',6)#此处的</div>
                    </li>
                    <li><a href="/article/1834719353124253696.htm"
                           title="从MVC到DDD的架构演进" target="_blank">从MVC到DDD的架构演进</a>
                        <span class="text-muted">洛蕾</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>Python微信订餐小程序课程视频https://edu.csdn.net/course/detail/36074Python实战量化交易理财系统https://edu.csdn.net/course/detail/35475DDD这几年越来越火,资料也很多,大部分的资料都偏向于理论介绍,有给出的代码与传统MVC的三层架构差异较大,再加上大量的新概念很容易让初学者望而却步。本文从MVC架构角度来讲</div>
                    </li>
                    <li><a href="/article/1834705362377338880.htm"
                           title="python 中 Class(类)的详细说明" target="_blank">python 中 Class(类)的详细说明</a>
                        <span class="text-muted">炸膛坦客</span>
<a class="tag" taget="_blank" href="/search/python%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">python学习笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>Class类用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。一个人(身高:一米八)要吃饭、喝水、睡觉;一只老虎(体重:300斤)要奔跑、洗澡、捕猎。一、名词定义类(Class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。方法:类中定义的函数。类变量:类变量在整个实例化的对象中是公用的。</div>
                    </li>
                    <li><a href="/article/1834701329814089728.htm"
                           title="flask和fastapi和streamlit有什么区别" target="_blank">flask和fastapi和streamlit有什么区别</a>
                        <span class="text-muted">小霖同学onism</span>
<a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%99%BD%E7%9A%84%E6%91%B8%E7%88%AC%E6%BB%9A%E6%89%93/1.htm">小白的摸爬滚打</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>Flask、FastAPI和Streamlit都是用于构建Web应用程序的Python框架或工具,但它们的用途和特点各不相同。以下是它们之间的主要区别:1.Flask简介:Flask是一个轻量级的、易于使用的PythonWeb框架,非常适合构建简单的Web应用和API。特点:灵活性高:Flask仅提供最基础的功能,允许开发者根据需要引入第三方扩展和库。社区支持:拥有庞大的社区和丰富的第三方扩展,易</div>
                    </li>
                                <li><a href="/article/41.htm"
                                       title="html页面js获取参数值" target="_blank">html页面js获取参数值</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                                    <div>1.js获取参数值js 
function GetQueryString(name) 
 { 
      var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); 
      var r = windo</div>
                                </li>
                                <li><a href="/article/168.htm"
                                       title="MongoDB 在多线程高并发下的问题" target="_blank">MongoDB 在多线程高并发下的问题</a>
                                    <span class="text-muted">BigCat2013</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/DB/1.htm">DB</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%B9%B6%E5%8F%91/1.htm">高并发</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E5%A4%8D%E6%95%B0%E6%8D%AE/1.htm">重复数据</a>
                                    <div>最近项目用到 MongoDB , 主要是一些读取数据及改状态位的操作. 因为是结合了最近流行的 Storm进行大数据的分析处理,并将分析结果插入Vertica数据库,所以在多线程高并发的情境下, 会发现 Vertica 数据库中有部分重复的数据. 这到底是什么原因导致的呢?笔者开始也是一筹莫 展,重复去看 MongoDB 的 API , 终于有了新发现 : 
com.mongodb.DB 这个类有</div>
                                </li>
                                <li><a href="/article/295.htm"
                                       title="c++ 用类模版实现链表(c++语言程序设计第四版示例代码)" target="_blank">c++ 用类模版实现链表(c++语言程序设计第四版示例代码)</a>
                                    <span class="text-muted">CrazyMizzz</span>
<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/C%2B%2B/1.htm">C++</a>
                                    <div>#include<iostream>
#include<cassert>
using namespace std;
template<class T>
class Node
{
private:
	Node<T> * next;
public:
	T data;                                    </div>
                                </li>
                                <li><a href="/article/422.htm"
                                       title="最近情况" target="_blank">最近情况</a>
                                    <span class="text-muted">麦田的设计者</span>
<a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%85%A8/1.htm">感慨</a><a class="tag" taget="_blank" href="/search/%E8%80%83%E8%AF%95/1.htm">考试</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a>
                                    <div>   在五月黄梅天的岁月里,一年两次的软考又要开始了。到目前为止,我已经考了多达三次的软考,最后的结果就是通过了初级考试(程序员)。人啊,就是不满足,考了初级就希望考中级,于是,这学期我就报考了中级,明天就要考试。感觉机会不大,期待奇迹发生吧。这个学期忙于练车,写项目,反正最后是一团糟。后天还要考试科目二。这个星期真的是很艰难的一周,希望能快点度过。 
  </div>
                                </li>
                                <li><a href="/article/549.htm"
                                       title="linux系统中用pkill踢出在线登录用户" target="_blank">linux系统中用pkill踢出在线登录用户</a>
                                    <span class="text-muted">被触发</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>由于linux服务器允许多用户登录,公司很多人知道密码,工作造成一定的障碍所以需要有时踢出指定的用户 
1/#who   查出当前有那些终端登录(用 w 命令更详细) 
# who 
root     pts/0        2010-10-28 09:36 (192</div>
                                </li>
                                <li><a href="/article/676.htm"
                                       title="仿QQ聊天第二版" target="_blank">仿QQ聊天第二版</a>
                                    <span class="text-muted">肆无忌惮_</span>
<a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a>
                                    <div>在第一版之上的改进内容: 
 第一版链接: 
http://479001499.iteye.com/admin/blogs/2100893 
  
用map存起来号码对应的聊天窗口对象,解决私聊的时候所有消息发到一个窗口的问题. 
增加ViewInfo类,这个是信息预览的窗口,如果是自己的信息,则可以进行编辑. 
  
信息修改后上传至服务器再告诉所有用户,自己的窗口</div>
                                </li>
                                <li><a href="/article/803.htm"
                                       title="java读取配置文件" target="_blank">java读取配置文件</a>
                                    <span class="text-muted">知了ing</span>

                                    <div>1,java读取.properties配置文件 
 
InputStream in;
		try {
			in = test.class.getClassLoader().getResourceAsStream("config/ipnetOracle.properties");//配置文件的路径
		    Properties p = new Properties()</div>
                                </li>
                                <li><a href="/article/930.htm"
                                       title="__attribute__ 你知多少?" target="_blank">__attribute__ 你知多少?</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/gcc/1.htm">gcc</a>
                                    <div>原文地址: 
http://www.cnblogs.com/astwish/p/3460618.html 
GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。 
 
__attribute__ 书写特征是:</div>
                                </li>
                                <li><a href="/article/1057.htm"
                                       title="jsoup使用笔记" target="_blank">jsoup使用笔记</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/JSoup/1.htm">JSoup</a>
                                    <div><dependency>
	<groupId>org.jsoup</groupId>
	<artifactId>jsoup</artifactId>
	<version>1.7.3</version>
</dependency>
 
 
 
 
 
2014/08/28 
今天遇到这种形式, </div>
                                </li>
                                <li><a href="/article/1184.htm"
                                       title="JAVA中的集合 Collectio 和Map的简单使用及方法" target="_blank">JAVA中的集合 Collectio 和Map的简单使用及方法</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/map/1.htm">map</a><a class="tag" taget="_blank" href="/search/set/1.htm">set</a>
                                    <div>         List ,set ,map的使用方法和区别 
java容器类类库的用途是保存对象,并将其分为两个概念: 
    Collection集合:一个独立的序列,这些序列都服从一条或多条规则;List必须按顺序保存元素  ,set不能重复元素;Queue按照排队规则来确定对象产生的顺序(通常与他们被插入的</div>
                                </li>
                                <li><a href="/article/1311.htm"
                                       title="杀LINUX的JOB进程" target="_blank">杀LINUX的JOB进程</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a>
                                    <div>今天发现数据库一个JOB一直在执行,都执行了好几个小时还在执行,所以想办法给删除掉 
  
系统环境: 
   ORACLE 10G 
   Linux操作系统 
  
操作步骤如下: 
第一步.查询出来那个job在运行,找个对应的SID字段 
select * from dba_jobs_running--找到job对应的sid 
&n</div>
                                </li>
                                <li><a href="/article/1438.htm"
                                       title="Spring AOP详解" target="_blank">Spring AOP详解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a>
                                    <div>        最近项目中遇到了以下几点需求,仔细思考之后,觉得采用AOP来解决。一方面是为了以更加灵活的方式来解决问题,另一方面是借此机会深入学习Spring AOP相关的内容。例如,以下需求不用AOP肯定也能解决,至于是否牵强附会,仁者见仁智者见智。 
1.对部分函数的调用进行日志记录,用于观察特定问题在运行过程中的函数调用</div>
                                </li>
                                <li><a href="/article/1565.htm"
                                       title="[Gson六]Gson类型适配器(TypeAdapter)" target="_blank">[Gson六]Gson类型适配器(TypeAdapter)</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Adapter/1.htm">Adapter</a>
                                    <div>TypeAdapter的使用动机 
 Gson在序列化和反序列化时,默认情况下,是按照POJO类的字段属性名和JSON串键进行一一映射匹配,然后把JSON串的键对应的值转换成POJO相同字段对应的值,反之亦然,在这个过程中有一个JSON串Key对应的Value和对象之间如何转换(序列化/反序列化)的问题。 
  
以Date为例,在序列化和反序列化时,Gson默认使用java.</div>
                                </li>
                                <li><a href="/article/1692.htm"
                                       title="【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行" target="_blank">【spark八十七】给定Driver Program, 如何判断哪些代码在Driver运行,哪些代码在Worker上执行</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/driver/1.htm">driver</a>
                                    <div>Driver Program是用户编写的提交给Spark集群执行的application,它包含两部分 
 
 作为驱动: Driver与Master、Worker协作完成application进程的启动、DAG划分、计算任务封装、计算任务分发到各个计算节点(Worker)、计算资源的分配等。 
 计算逻辑本身,当计算任务在Worker执行时,执行计算逻辑完成application的计算任务 
 </div>
                                </li>
                                <li><a href="/article/1819.htm"
                                       title="nginx 经验总结" target="_blank">nginx 经验总结</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/nginx+%E6%80%BB%E7%BB%93/1.htm">nginx 总结</a>
                                    <div>   深感nginx的强大,只学了皮毛,把学下的记录。 
   获取Header 信息,一般是以$http_XX(XX是小写) 
           获取body,通过接口,再展开,根据K取V 
   获取uri,以$arg_XX 
     &n</div>
                                </li>
                                <li><a href="/article/1946.htm"
                                       title="轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点" target="_blank">轩辕互动-1.求三个整数中第二大的数2.整型数组的平衡点</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a>
                                    <div>
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class ExoWeb {

	public static void main(String[] args) {
		ExoWeb ew=new ExoWeb();
		
		System.out.pri</div>
                                </li>
                                <li><a href="/article/2073.htm"
                                       title="Netty源码学习-Java-NIO-Reactor" target="_blank">Netty源码学习-Java-NIO-Reactor</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a>
                                    <div>Netty里面采用了NIO-based Reactor Pattern 
了解这个模式对学习Netty非常有帮助 
 
参考以下两篇文章: 
 
http://jeewanthad.blogspot.com/2013/02/reactor-pattern-explained-part-1.html 
 
http://gee.cs.oswego.edu/dl/cpjslides/nio.pdf 
</div>
                                </li>
                                <li><a href="/article/2200.htm"
                                       title="AOP通俗理解" target="_blank">AOP通俗理解</a>
                                    <span class="text-muted">cngolon</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/AOP/1.htm">AOP</a>
                                    <div>1.我所知道的aop     初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和 我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而 已。 2.为什么用aop&nb</div>
                                </li>
                                <li><a href="/article/2327.htm"
                                       title="cursor variable 实例" target="_blank">cursor variable 实例</a>
                                    <span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/variable/1.htm">variable</a>
                                    <div>
create or replace procedure proc_test01
as 
type emp_row is record(
empno emp.empno%type,
ename emp.ename%type,
job emp.job%type,
mgr emp.mgr%type,
hiberdate emp.hiredate%type,
sal emp.sal%t</div>
                                </li>
                                <li><a href="/article/2454.htm"
                                       title="shell报bash: service: command not found解决方法" target="_blank">shell报bash: service: command not found解决方法</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/service/1.htm">service</a><a class="tag" taget="_blank" href="/search/jps/1.htm">jps</a>
                                    <div>今天在执行一个脚本时,本来是想在脚本中启动hdfs和hive等程序,可以在执行到service hive-server start等启动服务的命令时会报错,最终解决方法记录一下: 
  
脚本报错如下: 
./olap_quick_intall.sh: line 57: service: command not found 
./olap_quick_intall.sh: line 59</div>
                                </li>
                                <li><a href="/article/2581.htm"
                                       title="40个迹象表明你还是PHP菜鸟" target="_blank">40个迹象表明你还是PHP菜鸟</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/oop/1.htm">oop</a>
                                    <div>你是PHP菜鸟,如果你:1. 不会利用如phpDoc 这样的工具来恰当地注释你的代码2. 对优秀的集成开发环境如Zend Studio 或Eclipse PDT 视而不见3. 从未用过任何形式的版本控制系统,如Subclipse4. 不采用某种编码与命名标准 ,以及通用约定,不能在项目开发周期里贯彻落实5. 不使用统一开发方式6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函</div>
                                </li>
                                <li><a href="/article/2708.htm"
                                       title="Android逐帧动画的实现" target="_blank">Android逐帧动画的实现</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>一、代码实现: 
private ImageView iv;
	private AnimationDrawable ad;
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout</div>
                                </li>
                                <li><a href="/article/2835.htm"
                                       title="java远程调用linux的命令或者脚本" target="_blank">java远程调用linux的命令或者脚本</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ganymed-ssh2/1.htm">ganymed-ssh2</a>
                                    <div>转载请出自出处:
http://eksliang.iteye.com/blog/2105862  
    
   Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)  
 使用步骤如下: 
1.导包 
官网下载: 
http://www.ganymed.ethz.ch/ssh2/ 
ma</div>
                                </li>
                                <li><a href="/article/2962.htm"
                                       title="adb端口被占用问题" target="_blank">adb端口被占用问题</a>
                                    <span class="text-muted">gqdy365</span>
<a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a>
                                    <div>最近重新安装的电脑,配置了新环境,老是出现: 
 
 

 adb server is out of date.  killing...  
    ADB server didn't ACK  
    * failed to start daemon *  
 
百度了一下,说是端口被占用,我开个eclipse,然后打开cmd,就提示这个,很烦人。 
 
一个比较彻底的解决办法就是修改</div>
                                </li>
                                <li><a href="/article/3089.htm"
                                       title="ASP.NET使用FileUpload上传文件" target="_blank">ASP.NET使用FileUpload上传文件</a>
                                    <span class="text-muted">hvt</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/webform/1.htm">webform</a>
                                    <div>前台代码: 
<asp:FileUpload ID="fuKeleyi" runat="server" />
<asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" /></div>
                                </li>
                                <li><a href="/article/3216.htm"
                                       title="代码之谜(四)- 浮点数(从惊讶到思考)" target="_blank">代码之谜(四)- 浮点数(从惊讶到思考)</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%AE%E7%82%B9%E6%95%B0/1.htm">浮点数</a><a class="tag" taget="_blank" href="/search/%E7%B2%BE%E5%BA%A6/1.htm">精度</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E4%B9%8B%E8%B0%9C/1.htm">代码之谜</a><a class="tag" taget="_blank" href="/search/IEEE/1.htm">IEEE</a>
                                    <div>在『代码之谜』系列的前几篇文章中,很多次出现了浮点数。 浮点数在很多编程语言中被称为简单数据类型,其实,浮点数比起那些复杂数据类型(比如字符串)来说, 一点都不简单。 
单单是说明 IEEE浮点数 就可以写一本书了,我将用几篇博文来简单的说说我所理解的浮点数,算是抛砖引玉吧。 一次面试 
记得多年前我招聘 Java 程序员时的一次关于浮点数、二分法、编码的面试, 多年以后,他已经称为了一名很出色的</div>
                                </li>
                                <li><a href="/article/3343.htm"
                                       title="数据结构随记_1" target="_blank">数据结构随记_1</a>
                                    <span class="text-muted">lx.asymmetric</span>
<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/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                                    <div>第一章 
  1.数据结构包括数据的
逻辑结构、数据的物理/存储结构和数据的逻辑关系这三个方面的内容。 2.数据的存储结构可用四种基本的存储方法表示,它们分别是
顺序存储、链式存储 、索引存储 和 散列存储。 3.数据运算最常用的有五种,分别是
 查找/检索、排序、插入、删除、修改。 4.算法主要有以下五个特性: 
输入、输出、可行性、确定性和有穷性。 5.算法分析的</div>
                                </li>
                                <li><a href="/article/3470.htm"
                                       title="linux的会话和进程组" target="_blank">linux的会话和进程组</a>
                                    <span class="text-muted">网络接口</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>会话: 一个或多个进程组。起于用户登录,终止于用户退出。此期间所有进程都属于这个会话期。会话首进程:调用setsid创建会话的进程1.规定组长进程不能调用setsid,因为调用setsid后,调用进程会成为新的进程组的组长进程.如何保证? 先调用fork,然后终止父进程,此时由于子进程的进程组ID为父进程的进程组ID,而子进程的ID是重新分配的,所以保证子进程不会是进程组长,从而子进程可以调用se</div>
                                </li>
                                <li><a href="/article/3597.htm"
                                       title="二维数组 元素的连续求解" target="_blank">二维数组 元素的连续求解</a>
                                    <span class="text-muted">1140566087</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/ACM/1.htm">ACM</a>
                                    <div>import java.util.HashMap;




public class Title {
	public static void main(String[] args){
		f();
	}

	// 二位数组的应用
	//12、二维数组中,哪一行或哪一列的连续存放的0的个数最多,是几个0。注意,是“连续”。
	public static void f(){
</div>
                                </li>
                                <li><a href="/article/3724.htm"
                                       title="也谈什么时候Java比C++快" target="_blank">也谈什么时候Java比C++快</a>
                                    <span class="text-muted">windshome</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a>
                                    <div>  
刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。 
  
你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢? 
  
我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C</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>