Python2 爬虫(六) -- 初尝Scrapy框架

1、Scrapy简介

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。
Scrapy官网文档 -- 戳我

本来我是基于Python3.5学习爬虫的,但是Python3.x不支持Scrapy框架。即便不支持,也不能就此放弃这个强大的框架,于是转战Ubuntu,搭建Python2.7环境,安装Scrapy,开始学习~~~

2、环境搭建

【1】系统Ubuntu 15
【2】Python版本 -- 2.7 & 3.4 , 安装pip工具
Python2 爬虫(六) -- 初尝Scrapy框架_第1张图片
我的Ubuntu系统上安装了Python2.7和Python3.4两个版本,但是默认配置依然是2.7。
【3】安装Scrapy
使用命令(apt-get install python-scrapy)或者(pip install scrapy)安装:
Python2 爬虫(六) -- 初尝Scrapy框架_第2张图片
验证安装完成:
Python2 爬虫(六) -- 初尝Scrapy框架_第3张图片
出现上图内容,说明正确安装Scrapy。其实Scrapy框架依赖setuptools,lxml,以及OpenSSL软件,但是Ubuntu中Python2.7已经内置安装,所以,一个简单的命令即可完成Scrapy框架的配置,非常简便。
至此,Scrapy已经配置完成,下面开始我们的第一个Scrapy爬虫项目吧。

3、第一个Scrapy爬虫实例

此实例源于官网( Scrapy入门教程)。

3.1 开发步骤

接下来以 Open Directory Project(dmoz) (dmoz) 为例来讲述爬取。
  1. 创建一个Scrapy项目
  2. 定义提取的Item
  3. 编写爬取网站的 spider 并提取 Item
  4. 编写 Item Pipeline 来存储提取到的Item(即数据)

3.2 创建项目

在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:
scrapy startproject tutorial
该命令将会创建包含下列内容的 tutorial 目录:
tutorial/
    scrapy.cfg
    tutorial/
        __init__.py
        items.py
        pipelines.py
        settings.py
        spiders/
            __init__.py
            ...
这些文件分别是:
  1. scrapy.cfg: 项目的配置文件.
  2. tutorial/: 该项目的python模块。之后您将在此加入代码.
  3. tutorial/items.py: 项目中的item文件.
  4. tutorial/pipelines.py: 项目中的pipelines文件.
  5. tutorial/settings.py: 项目的设置文件.
  6. tutorial/spiders/: 放置spider代码的目录.

3.3 定义Item

Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。item可以用scrapy.item.Item类来创建,并且用scrapy.item.Field对象来定义属性(可以理解成类似于ORM的映射关系)。
类似在ORM中做的一样,您可以通过创建一个 scrapy.Item 类, 并且定义类型为 scrapy.Field 的类属性来定义一个Item。 
首先根据需要从dmoz.org获取到的数据对item进行建模。 我们需要从dmoz中获取名字,url,以及网站的描述。 对此,在item中定义相应的字段。编辑 tutorial 目录中的 items.py 文件,添加类DmozItem:
import scrapy

class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

3.4 编写第一个爬虫

Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。
其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成 item 的方法。
为了创建一个Spider,您必须继承 scrapy.Spider 类, 且定义以下三个属性:
  • name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
  • start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
  • parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。
以下为我们的第一个Spider代码,保存在 tutorial/spiders 目录下的 dmoz_spider.py 文件中:
import scrapy

class DmozSpider(scrapy.spiders.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        filename = response.url.split("/")[-2]
        with open(filename, 'wb') as f:
            f.write(response.body)

3.4.1 爬取

在项目的根目录输入命令(scrapy crawl dmoz)运行我们的爬虫,得到结果:
Python2 爬虫(六) -- 初尝Scrapy框架_第4张图片
...中间省略
Python2 爬虫(六) -- 初尝Scrapy框架_第5张图片
最后一句INFO: Closing spider (finished)表明爬虫已经成功运行并且自行关闭了。
查看包含 [dmoz] 的输出,可以看到输出的log中包含定义在 start_urls 的初始URL,并且与spider中是一一对应的。在log中可以看到其没有指向其他页面( (referer:None) )。
那么,刚才发生了什么?
首先,Scrapy为Spider的 start_urls 属性中的每个URL创建了 scrapy.Request 对象,并将 parse 方法作为回调函数(callback)赋值给了Request。
然后,Request对象经过调度,执行生成 scrapy.http.Response 对象并送回给spider parse() 方法。

3.4.2 使用XPath

Selectors选择器简介:
从网页中提取数据有很多方法。Scrapy使用了一种基于 XPath 和 CSS 表达式机制: Scrapy Selectors 。 关于selector和其他提取机制的信息请参考 Selector文档 。
这里给出XPath表达式的例子及对应的含义:
  • /html/head/title: 选择HTML文档中 标签内的 元素</li> <li>/html/head/title/text(): 选择上面提到的 <title> 元素的文字</li> <li>//td: 选择所有的 <td> 元素</li> <li>//div[@class="mine"]: 选择所有具有 class="mine" 属性的 div 元素</li> </ul> 为了配合XPath,Scrapy除了提供了 Selector 之外,还提供了方法来避免每次从response中提取数据时生成selector的麻烦。 <br> Selector有四个基本的方法: </div> <div> <ul> <li>xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 。</li> <li>css(): 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表。</li> <li>extract(): 序列化该节点为unicode字符串并返回list。</li> <li>re(): 根据传入的正则表达式对数据进行提取,返回unicode字符串list列表。</li> </ul> <div> 首先,先查看一下我们需要爬取的网页http://www.dmoz.org/Computers/Programming/Languages/Python/Books/ </div> <div> <a href="http://img.e-com-net.com/image/info8/7efa34d9c95949dbaea502cb43363477.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/7efa34d9c95949dbaea502cb43363477.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第6张图片" width="650" height="433" style="border:1px solid black;"></a> <br> </div> 然后,在Shell中尝试Selector选择器 <br> 为了介绍Selector的使用方法,接下来我们将要使用内置的 Scrapy shell 。Scrapy Shell需要您预装好IPython(一个扩展的Python终端)。进入项目的根目录,执行下列命令来启动shell: <br> </div> <div> <pre><code class="language-python">scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"</code></pre> </div> <div> <a href="http://img.e-com-net.com/image/info8/24002d40d012486bb8f736875e6a10a8.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/24002d40d012486bb8f736875e6a10a8.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第7张图片" width="650" height="424" style="border:1px solid black;"></a> <br> </div> <div> 当shell载入后,您将得到一个包含response数据的本地 response 变量。输入 response.body 将输出response的包体, 输出 response.headers 可以看到response的包头。 <br> 更为重要的是,当输入 response.selector 时, 您将获取到一个可以用于查询返回数据的selector(选择器), 以及映射到 response.selector.xpath() 、 response.selector.css() 的 快捷方法(shortcut): response.xpath() 和 response.css() 。 <br> 同时,shell根据response提前初始化了变量 sel 。该selector根据response的类型自动选择最合适的分析规则(XML vs HTML)。 <br> 让我们来试试: <br> </div> <div> <a href="http://img.e-com-net.com/image/info8/51d09f0cce804bbbb57f64972204d48f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/51d09f0cce804bbbb57f64972204d48f.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第8张图片" width="650" height="394" style="border:1px solid black;"></a> <br> </div> <div> <span style="color:#3333ff;">xpath路径表达式(说明):<br> 表达式<span> </span>描述<br> nodename<span> </span>选取此节点的所有子节点。<br> /<span> </span>从根节点选取。<br> //<span> </span>从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。<br> .<span> </span>选取当前节点。<br> ..<span> </span>选取当前节点的父节点。<br> @<span> </span>选取属性。</span> <br> </div> <h3>3.4.3 查看网页源代码,提取有用数据</h3> <div> <a href="http://img.e-com-net.com/image/info8/be439268c77d48efb94729fde7778343.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/be439268c77d48efb94729fde7778343.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第9张图片" width="650" height="195" style="border:1px solid black;"></a> <br> </div> <div> 在查看了网页的源码后,您会发现网站的信息是被包含在 第二个 <ul> 元素中。 <br> 我们可以通过这段代码选择该页面中网站列表里所有 <li> 元素: <br> sel.xpath('//ul/li') <br> 网站的描述: <br> sel.xpath('//ul/li/text()').extract() <br> 网站的标题: <br> sel.xpath('//ul/li/a/text()').extract() <br> 以及网站的链接: <br> sel.xpath('//ul/li/a/@href').extract() <br> 之前提到过,每个 .xpath() 调用返回selector组成的list,因此我们可以拼接更多的 .xpath() 来进一步获取某个节点。我们将在下边使用这样的特性: <br> <p></p> <pre><code class="language-python">for sel in response.xpath('//ul/li'): title = sel.xpath('a/text()').extract() link = sel.xpath('a/@href').extract() desc = sel.xpath('text()').extract() print title, link, desc</code></pre> <p></p> <h3>3.4.4 修改dmoz_spider.py中DmozSpider类的代码:</h3> </div> <div> <p></p> <pre><code class="language-python"># -*- coding: UTF-8 -*- import scrapy,sys from scrapy.spider import Spider from scrapy.selector import Selector from tutorial.items import DmozItem #设置编码格式 reload(sys) sys.setdefaultencoding('gbk') class DmozSpider(Spider): name = "dmoz" allowed_domains = ["dmoz.org"] start_urls = [ "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" ] def parse(self, response): """ The lines below is a spider contract. For more info see: http://doc.scrapy.org/en/latest/topics/contracts.html @url http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/ @scrapes name """ sel = Selector(response) sites = sel.xpath('//ul/li') for site in sites: title = site.xpath('a/text()').extract() link = site.xpath('a/@href').extract() disc = site.xpath('text()').extract() print("title= "+str(title)+"\tlink= "+str(link)+"\tdisc= "+str(disc)+"\n") </code></pre> <span style="color:#ff0000;">说明:</span> <p></p> <p></p> <ul> <li><span style="color:#ff0000;">代码中的中文注释,首句添加# -*- coding: UTF-8 -*- 避免出现编码错误<br></span></li> <li><span style="color:#ff0000;">若有写文件操作添加代码sys.setdefaultencoding('gbk'),设置编码格式</span></li> </ul> <p></p> 在项目的根目录输入命令(scrapy crawl dmoz)运行我们的爬虫,得到结果: <br> <a href="http://img.e-com-net.com/image/info8/d2925d92d4a94896a6ecce13521634bd.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/d2925d92d4a94896a6ecce13521634bd.png" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第10张图片" width="812" height="576" style="border:1px solid black;"></a> <br> </div> <div> ...省略 </div> <div> 对比网站内容,我们发现网页顶层的Top和Python部分也被抓取出来,我们把这部分过滤掉。根据网页源代码发现,我们所要提取的目标信息是从  <ul class="directory-url"...开始的。再次修改代码: </div> <div> sites = sel.xpath('//ul[@class="directory-url"]/li') <br> </div> <div> 重新运行会发现此时已经将Top和Python部分过滤掉了。 </div> <h2>3.5 使用Item提取,并保存至dmoz.json</h2> <h3>3.5.1  使用Item</h3> <div> Item 对象是自定义的python字典。 您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性): <br> </div> <div> <pre><code class="language-python">>>> item = DmozItem() >>> item['title'] = 'Example title' >>> item['title'] 'Example title'</code></pre>一般来说,Spider将会将爬取到的数据以 Item 对象返回。所以为了将爬取的数据返回,修改dmoz_spider.py中DmozSpider类的代码: </div> <div> <pre><code class="language-python"># -*- coding: UTF-8 -*- import scrapy from scrapy.spider import Spider from scrapy.selector import Selector from tutorial.items import DmozItem #设置编码格式 reload(sys) sys.setdefaultencoding('gbk') class DmozSpider(Spider): name = "dmoz" allowed_domains = ["dmoz.org"] start_urls = [ "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/" ] def parse(self, response): """ The lines below is a spider contract. For more info see: http://doc.scrapy.org/en/latest/topics/contracts.html @url http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/ @scrapes name """ sel = Selector(response) sites = sel.xpath('//ul[@class="directory-url"]/li') items = [] for site in sites: item = DmozItem() item['title'] = site.xpath('a/text()').extract() item['link'] = site.xpath('a/@href').extract() item['desc'] = site.xpath('text()').re('-\s[^\n]*\\r') items.append(item) return items </code></pre> <h3>3.5.2 运行并保存为json文件</h3> </div> <div> 保存信息的最简单的方法是通过Feed exports,主要有四种:JSON,JSON lines,CSV,XML。 </div> <div> 我们将结果用最常用的JSON导出,命令如下: <br> scrapy crawl dmoz -o items.json -t json   <br> -o 后面是导出文件名,-t 后面是导出类型。 </div> <div> 运行结果: </div> <div> <a href="http://img.e-com-net.com/image/info8/2daf2ef9786440d9bfcfe46cca3c73d1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2daf2ef9786440d9bfcfe46cca3c73d1.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第11张图片" width="650" height="395" style="border:1px solid black;"></a> </div> <div> 查看items.json文件: </div> <div> <a href="http://img.e-com-net.com/image/info8/e38f2bff7e2943098b7e6644eaa880bc.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/e38f2bff7e2943098b7e6644eaa880bc.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第12张图片" width="650" height="417" style="border:1px solid black;"></a> </div> <div> <h2>3.6 使用Pipeline输出结果</h2> <div> 打开tutuorial/tutorial/pipelines.py文件,添加自定义JsonWithEncodingTutorialPipeline类代码: <pre><code class="language-python"># -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html import scrapy from scrapy import signals import json, codecs class TutorialPipeline(object): def process_item(self, item, spider): return item class JsonWithEncodingTutorialPipeline(object): def __init__(self): self.file = codecs.open('dmoz.json','w',encoding='utf-8') def process_item(self,item,spider): line = json.dumps(dict(item),ensure_ascii=False)+'\n\n' self.file.write(line) return item def spider_closed(self,spider): self.file.close()</code></pre>打开tutuorial/tutorial/settings.py文件,在末尾追加部分代码: </div> <div> <pre><code class="language-python"># -*- coding: utf-8 -*- # Scrapy settings for tutorial project # # For simplicity, this file contains only the most important settings by # default. All the other settings are documented here: # # http://doc.scrapy.org/en/latest/topics/settings.html # BOT_NAME = 'tutorial' SPIDER_MODULES = ['tutorial.spiders'] NEWSPIDER_MODULE = 'tutorial.spiders' # Crawl responsibly by identifying yourself (and your website) on the user-agent #USER_AGENT = 'tutorial (+http://www.yourdomain.com)' ITEM_PIPELINES = { 'tutorial.pipelines.JsonWithEncodingTutorialPipeline': 300, } LOG_LEVEL = 'INFO'</code></pre> </div> 重新运行scrapy crawl dmoz: </div> <div> <a href="http://img.e-com-net.com/image/info8/d12cf6fcb9d54e4a82ee0f7164fbcb7e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/d12cf6fcb9d54e4a82ee0f7164fbcb7e.jpg" alt="Python2 爬虫(六) -- 初尝Scrapy框架_第13张图片" width="650" height="592" style="border:1px solid black;"></a> <br> </div> <div> 我们可以发现,在根目录下多了一个dmoz.json文件,这就是我们利用pipeline管道自动生成的结果文件,可以查看其内容与上节的结果完全相同。 </div> <div> <br> </div> <div> 完整代码见: GitHub代码链接(请猛戳~~~) </div> <div> <br> <br> <br> </div> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1293036439587594240"></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)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1883285304585023488.htm" title="Flask python 开发篇:蓝图的使用" target="_blank">Flask python 开发篇:蓝图的使用</a> <span class="text-muted">ignativs amor</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>蓝图引言一、为什么使用蓝图?二、蓝图的概念三、创建蓝图四、注册蓝图五、分享我的creat_app方法六、写在最后引言falsk是个轻量级的框架,核心实现简单,但同事可以让开发人员自由的扩展功能。开发中,使用模块导入的方式。一、为什么使用蓝图?将一个应用程序分解为一组蓝图。这对于较大的应用程序是理想的;一个项目可以实例化一个应用程序对象,初始化多个扩展,并注册许多蓝图。-在URL前缀和(或)子域的应</div> </li> <li><a href="/article/1883281776554602496.htm" title="Python生成成绩报告单:从理论到实践" target="_blank">Python生成成绩报告单:从理论到实践</a> <span class="text-muted">Tech Synapse</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作为一种功能强大且易于学习的编程语言,非常适合用于这种数据处理和报告生成任务。本文将详细介绍如何使用Python生成成绩报告单,包括理论概述和完整的代码示例。一、理论概述1.数据存储与处理生成成绩报告单的第一步是存储和处理学生成绩数据。常见的数据存储方式包括CSV文件、Excel文件和数据库。</div> </li> <li><a href="/article/1883281270713151488.htm" title="深入解析LangChain框架:使用Python开发LLM应用的全生命周期指南" target="_blank">深入解析LangChain框架:使用Python开发LLM应用的全生命周期指南</a> <span class="text-muted">m0_57781768</span> <a class="tag" taget="_blank" href="/search/langchain/1.htm">langchain</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>深入解析LangChain框架:使用Python开发LLM应用的全生命周期指南前言在当前的人工智能浪潮中,大型语言模型(LLM)已成为众多应用的核心。LangChain是一个专为开发大型语言模型应用而设计的框架,它简化了LLM应用的整个生命周期,包括开发、生产化和部署。本文将详细介绍LangChain框架的各个方面,涵盖其核心组件、第三方集成、开发教程、API参考等,并通过实际案例展示如何使用La</div> </li> <li><a href="/article/1883280513725165568.htm" title="Python多继承时子类如何调用指定父类" target="_blank">Python多继承时子类如何调用指定父类</a> <span class="text-muted">lingllllove</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中,多继承是一种强大的特性,允许一个类同时继承多个父类的属性和方法。然而,当多个父类中存在同名方法时,子类需要明确调用哪个父类的方法。本文将详细介绍如何在多继承情况下,子类调用指定父类的方法。一、多继承的基本概念1.1多继承的定义多继承指一个类可以继承多个父类,获取多个父类的属性和方法。classA:defgreet(self):print("HellofromA")classB:d</div> </li> <li><a href="/article/1883280135298281472.htm" title="python flask 蓝图(Blueprint)详解" target="_blank">python flask 蓝图(Blueprint)详解</a> <span class="text-muted">ldq_sd</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Blueprint模块化随着flask程序越来越复杂,我们需要对程序进行模块化的处理,针对一个简单的flask程序进行模块化处理举例来说:我们在一个py文件中写入了很多路由,fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defindex():return'index'@app.route('/list')deflist():return</div> </li> <li><a href="/article/1883280009011982336.htm" title="【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.4 切片大师:高效操作多维数据的23个技巧" target="_blank">【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.4 切片大师:高效操作多维数据的23个技巧</a> <span class="text-muted">精通代码大仙</span> <a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/numpy/1.htm">numpy</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>1.4切片大师:高效操作多维数据的23个技巧基础切片start:end:step省略写法负索引多维切片高级技巧视图机制布尔索引花式索引动态切片对象1.4切片大师:高效操作多维数据的23个技巧1.4.1切片操作符的完整语法表NumPy数组的切片操作符与标准Python列表的切片操作符类似,但更加强大,支持多维数组的操作。以下是一个完整的切片操作符语法表,包括正负索引的示意图。1.4.1.1一维数组切</div> </li> <li><a href="/article/1883266897319882752.htm" title="一键获取每日股票数据,自动更新,尽在掌握" target="_blank">一键获取每日股票数据,自动更新,尽在掌握</a> <span class="text-muted">舔狼</span> <a class="tag" taget="_blank" href="/search/A%E8%82%A1%E8%82%A1%E7%A5%A8%E6%95%B0%E6%8D%AE/1.htm">A股股票数据</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%87%91%E8%9E%8D/1.htm">金融</a> <div>用Python和Tushare库获取股票日线数据在金融市场分析中,获取股票的历史数据是进行技术分析和量化投资的基础。Tusharetushare官网是一个提供中国股市数据的API接口,它支持获取股票的日线数据、基本面数据等。本文将介绍如何使用Python语言和Tushare库来获取股票的日线数据,并结合多线程技术提高数据获取的效率。1.环境准备首先,确保你的Python环境中安装了以下库:tush</div> </li> <li><a href="/article/1883266517311746048.htm" title="华为OD机试E卷 --响应报文时间 --24年OD统一考试(Java & JS & Python & C & C++)" target="_blank">华为OD机试E卷 --响应报文时间 --24年OD统一考试(Java & JS & Python & C & C++)</a> <span class="text-muted">飞码创造者</span> <a class="tag" taget="_blank" href="/search/%E6%9C%80%E6%96%B0%E5%8D%8E%E4%B8%BAOD%E6%9C%BA%E8%AF%95%E9%A2%98%E5%BA%932024/1.htm">最新华为OD机试题库2024</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>文章目录题目描述输入描述输出描述用例题目解析JS算法源码Java算法源码python算法源码c算法源码c++算法源码题目描述IGMP协议中,有一个字段称作最大响应时间(MaxResponseTime),HOST收到查询报文,解折出MaxResponsetime字段后,需要在(0,MaXxResponseTime]时间(s)内选取随机时间回应一个响应报文,如果在随机时间内收到一个新的查询报文,则会根</div> </li> <li><a href="/article/1883262349163425792.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/mysql/1.htm">mysql</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%E5%BA%93/1.htm">数据库</a> <div>Python标准数据库接口为PythonDB-API,PythonDB-API为开发人员提供了数据库应用编程接口。PythonDB-API使用流程:引入API模块获取与数据库的连接执行SQL语句和存储过程关闭数据库连接文章目录MySQLdb创建数据库及表创建数据库:创建数据库表:修改数据库的访问权限(1)修改root的登录限制(2)创建新用户pymysql使用导入pymysql模块连接到数</div> </li> <li><a href="/article/1883259323514155008.htm" title="《Spark大数据分析与内存计算》——第三章" target="_blank">《Spark大数据分析与内存计算》——第三章</a> <span class="text-muted">阿万古</span> <a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E4%BD%9C%E4%B8%9A/1.htm">课程作业</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a> <div>第三章作业及答案快捷查找:Ctrl+F在搜索框中输入题目一.单选题(共17题)1.(单选题)并不是所有企业都能自己产生数据,从而用于决策辅助,而更多的互联网企业如电商等大部分是要靠什么来抓取互联网数据进行分析A.HadoopB.pythonC.SparkD.网路爬虫正确答案:D:网路爬虫;2.(单选题)什么负责即席查询的应用A.MLlibB.SparkStreamingC.GraphXD.Spar</div> </li> <li><a href="/article/1883258691034083328.htm" title="Python - 安装 Python、pip、virtualenv" target="_blank">Python - 安装 Python、pip、virtualenv</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/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pip/1.htm">pip</a><a class="tag" taget="_blank" href="/search/%E6%BA%90/1.htm">源</a> <div>文章目录一、PythonUbuntu安装Python问题创建虚拟环境一些使用问题Nomodulenamed'_sqlite3'二、pip(管理第三方库)1、查看pip版本2、安装pip3、升级pip4、卸载pip5、查看已安装的pkg6、第三方库site-packages地址:7、更新8、切换源9、根据requirements.txt安装其它三、virtualenv(管理多个env)1、安装2、查</div> </li> <li><a href="/article/1883256041978785792.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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>知名国企:豆瓣https://pypi.doubanio.com/simple/网易https://mirrors.163.com/pypi/simple/阿里云https://mirrors.aliyun.com/pypi/simple/腾讯云https://mirrors.cloud.tencent.com/pypi/simple————————————————知名高校:清华大学(推荐):ht</div> </li> <li><a href="/article/1883252764230873088.htm" title="Codeforces Round 971 (Div. 4) ABCD题详细题解(C++,Python)" target="_blank">Codeforces Round 971 (Div. 4) ABCD题详细题解(C++,Python)</a> <span class="text-muted">多思考少编码</span> <a class="tag" taget="_blank" href="/search/Codeforces/1.htm">Codeforces</a><a class="tag" taget="_blank" href="/search/div3/1.htm">div3</a><a class="tag" taget="_blank" href="/search/%2B/1.htm">+</a><a class="tag" taget="_blank" href="/search/div4%E9%A2%98%E8%A7%A3/1.htm">div4题解</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E7%AB%9E%E8%B5%9B/1.htm">算法竞赛</a><a class="tag" taget="_blank" href="/search/codeforces/1.htm">codeforces</a> <div>前言:本文为CodeforcesRound971(Div.4)ABCD题的题解,包含C++,Python语言描述,觉得有帮助或者写的不错可以点个赞比赛打了没一半突然unrated了就不是很想继续写了,早起写个题解(之前的div3也没复盘,哎真菜)目录题A:题目大意和解题思路:代码(C++):代码(Python):题B:题目大意和解题思路:代码(C++):代码(Python):题C:题目大意和解题思</div> </li> <li><a href="/article/1883251757027487744.htm" title="Python酷库之旅-第三方库Pandas(049)" target="_blank">Python酷库之旅-第三方库Pandas(049)</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/pandas/1.htm">pandas</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/%E6%A0%87%E5%87%86%E5%BA%93%E5%8F%8A%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93/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/excel/1.htm">excel</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E4%B8%8E%E6%88%90%E9%95%BF/1.htm">学习与成长</a> <div>目录一、用法精讲176、pandas.Series.rank方法176-1、语法176-2、参数176-3、功能176-4、返回值176-5、说明176-6、用法176-6-1、数据准备176-6-2、代码示例176-6-3、结果输出177、pandas.Series.sem方法177-1、语法177-2、参数177-3、功能177-4、返回值177-5、说明177-6、用法177-6-1、数据准</div> </li> <li><a href="/article/1883247211970621440.htm" title="Jupyter Notebook 与 PyTorch 配置教程" target="_blank">Jupyter Notebook 与 PyTorch 配置教程</a> <span class="text-muted">如若123</span> <a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a> <div>JupyterNotebook与PyTorch配置教程安装build-essential:sudoaptinstallbuild-essential安装编译软件所需的基本工具。安装Python3.8:sudoaptinstallpython3.8如果未安装Python3.8,执行此命令进行安装。下载Miniconda:wgethttps://repo.anaconda.com/miniconda/</div> </li> <li><a href="/article/1883243422161104896.htm" title="fuadmin" target="_blank">fuadmin</a> <span class="text-muted">jcsx</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E5%AD%A6%E4%B9%A0/1.htm">开源学习</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>fu-admin-web采用VUE3,TS开发。fu-admin-backend采用Python,Django和Django-Ninija开发。数据库支持MySql,SqlServer,Sqlite。‍‍前端采用VbenAdmin、Vue3、AntDesignVue。后端采用Python语言Django框架以及强大的DjangoNinja。支持加载动态权限菜单,多方式轻松权限控制。Vue2项目移步</div> </li> <li><a href="/article/1883239513266909184.htm" title="scikit-learn安装" target="_blank">scikit-learn安装</a> <span class="text-muted">梁伟静</span> <a class="tag" taget="_blank" href="/search/scikit-learn/1.htm">scikit-learn</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>问题:importscikit-learn时遇到如下报错:ImportError:DLLloadfailedwhileimporting_arpack:Thespecifiedprocedurecouldnotbefound.可能原因:python、numpy、scipy和scikit-learn之间的版本出现冲突解决方案:1)卸载numpy、scipy、scikit-learncondaunin</div> </li> <li><a href="/article/1883238506071912448.htm" title="python中函数的定义" target="_blank">python中函数的定义</a> <span class="text-muted">xuwentao!!</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>python内部中函数一般定义的方式是:deffunc(a,*args,**kwargs):pass所以在外面调用的时候需要小心的,如果有字典对象传进去需要注意func(a,dict)会报错的,函数会把这个dict当作一个元祖来处理了,但是你想传入字典,所以这里需要解包处理,让函数明白你传入的是一个字典:func(a,**dict)所以在调用函数的时候需要想想是否需要解包处理</div> </li> <li><a href="/article/1883235858480427008.htm" title="paddleseg推理预测文件解析predict.py" target="_blank">paddleseg推理预测文件解析predict.py</a> <span class="text-muted">weightOneMillion</span> <a class="tag" taget="_blank" href="/search/%E5%9B%BE%E5%83%8F%E5%88%86%E5%89%B2/1.htm">图像分割</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E4%B8%80%E7%AF%87PaddleSeg/1.htm">每天一篇PaddleSeg</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>1预测命令格式predict.py脚本是专门用来可视化预测案例的,命令格式如下所示:pythonpredict.py\--configconfigs/quick_start/bisenet_optic_disc_512x512_1k.yml\--model_pathoutput/iter_1000/model.pdparams\--ima</div> </li> <li><a href="/article/1883234975659126784.htm" title="python之函数的定义" target="_blank">python之函数的定义</a> <span class="text-muted">徐jiankang</span> <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/%E6%97%A5%E5%B8%B8%E6%80%BB%E7%BB%93/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>博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏。目录一、背景二、函数的定义三、参考四、总结一、背景  实际开发过程中,经常会遇到很多完全相同或者非常相似的操作,这时,可以将实现类似操作的代码封装为函数,然后在需要的地方调用该函数。这样不仅可以实现代</div> </li> <li><a href="/article/1883233587684241408.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><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a> <div>引言在Python编程的世界中,函数堪称构建复杂逻辑和模块化程序的基础砖石。它能够帮助程序员组织代码、避免重复,并通过封装逻辑提高代码的可读性和可维护性。本文旨在全方位解析Python函数的核心概念,包括基础定义、文档化、默认参数、可选参数、解包参数、关键字仅参数、注解、可调用性检查、函数名称获取、匿名函数(lambda表达式)、生成器以及装饰器等多种实用特性。一、函数基础与文档化defexamp</div> </li> <li><a href="/article/1883233335065505792.htm" title="Ubuntu python 升级" target="_blank">Ubuntu python 升级</a> <span class="text-muted">bianjingshan</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a> <div>1.安装新版本pythonsudoapt-getinstallpython3python3被安装在/usr/local/lib路径,到此目录下查看python3的版本号,例如python3.52.删除/usr/bin路径下的pythonlink文件cd/usr/binsudorm-rfpython3.重新建立连接sudoln-s/usr/bin/python3.5/usr/bin/python4.</div> </li> <li><a href="/article/1883229674818039808.htm" title="如何在 Ubuntu 20.04 或 22.04 上安装 Python 3" target="_blank">如何在 Ubuntu 20.04 或 22.04 上安装 Python 3</a> <span class="text-muted">百川Cs</span> <a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/1.htm">计算机基础</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</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><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a> <div>以下是关于如何在Ubuntu20.04或22.04上安装Python3的详细步骤。Python是一种广泛使用的编程语言,适用于自动化、数据分析、机器学习等领域。Ubuntu系统通常预装了Python3,但如果需要安装或升级到最新版本,可以按照以下方法操作。检查系统是否已安装Python3打开终端(快捷键:Ctrl+Alt+T)。输入以下命令检查是否已安装Python3:python3--versi</div> </li> <li><a href="/article/1883228036732612608.htm" title="Python pywinauto PC端自动化测试核心代码封装类" target="_blank">Python pywinauto PC端自动化测试核心代码封装类</a> <span class="text-muted">《代码爱好者》</span> <a class="tag" taget="_blank" href="/search/ChatGPT/1.htm">ChatGPT</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95%E6%A1%86%E6%9E%B6/1.htm">自动化测试框架</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>PythonpywinautoPC端自动化测试核心代码封装类以下是一个基于pywinauto的自动化测试核心代码封装类的完整代码实例,其中包含多个函数实例并加上中文注释方案1importpywinautoimporttimeclassPywinautoWrapper:def__init__(self,app_path):"""初始化函数,传入应用程序的路径"""self.app_path=app_</div> </li> <li><a href="/article/1883225005676883968.htm" title="PySide6与PyQt5的区别" target="_blank">PySide6与PyQt5的区别</a> <span class="text-muted">大乔乔布斯</span> <a class="tag" taget="_blank" href="/search/pyqt/1.htm">pyqt</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a> <div>虽然PySide6和PyQt5的功能和API十分相似,但由于它们分别是基于不同版本的Qt和由不同的团队维护,是两个不同的Python绑定库,分别用于与Qt库进行交互,可能会在一些细节上表现出差异,一些关键区别:1.维护和授权PySide6:由TheQtCompany官方维护。使用LGPL授权,这意味着你可以在开源和闭源项目中免费使用它(遵守LGPL条款)。版本号与Qt本身一致,PySide6对应于</div> </li> <li><a href="/article/1883224879373807616.htm" title="MySQL 拆分字符串函数Split" target="_blank">MySQL 拆分字符串函数Split</a> <span class="text-muted">大乔乔布斯</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>MYSQL目前没有Hive或者Java。python这列直接split的函数,需要自己定义一个,复制代码,一键使用CREATEDEFINER=`root`@`localhost`FUNCTION`func_split_str`(xVARCHAR(255),--字符串delimVARCHAR(12),--分隔符posINT--按分隔浮拆分后的第几个结果,从1开始数)RETURNSvarchar(25</div> </li> <li><a href="/article/1883223745653436416.htm" title="TypeError: ‘str‘ object is not callable的几种情况及解决办法" target="_blank">TypeError: ‘str‘ object is not callable的几种情况及解决办法</a> <span class="text-muted">兔兔爱学习兔兔爱学习</span> <a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>TypeError:‘str’objectisnotcallable的几种情况及解决办法第一个可能,定义了一个str的变量,这个和Python自带函数str的命名冲突了,所以发生这个错误。确实,这是一个情况。这种情况的解决办法就是:严格遵守命名规范,避免命名冲突。第二个可能,是字符串后面加了括号调用的缘故。这一般是由于不了解,对某个对象的细节不清楚,错把属性看成了函数。</div> </li> <li><a href="/article/1883214539298762752.htm" title="Python:实现similarity search相似性搜索算法(附完整源码)" target="_blank">Python:实现similarity search相似性搜索算法(附完整源码)</a> <span class="text-muted">源代码大师</span> <a class="tag" taget="_blank" href="/search/python%E7%AE%97%E6%B3%95%E5%AE%8C%E6%95%B4%E6%95%99%E7%A8%8B/1.htm">python算法完整教程</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>Python:实现similaritysearch相似性搜索算法from__future__importannotationsimportmathimportnumpyasnpdefeuclidean(input_a:np.ndarray,input_b:np.ndarray)-></div> </li> <li><a href="/article/1883208612772376576.htm" title="解锁 Python 与 MySQL 交互密码:全方位技术解析与实战攻略" target="_blank">解锁 Python 与 MySQL 交互密码:全方位技术解析与实战攻略</a> <span class="text-muted">秋夜Autumn</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/MySQL/1.htm">MySQL</a> <div>目录一、引言二、环境准备2.1安装MySQL2.2安装Python及相关库2.2.1使用mysql-connector-python2.2.2使用pymysql三、基本连接与操作3.1连接到MySQL数据库3.2创建游标对象3.3执行SQL查询3.3.1查询单条记录3.3.2查询多条记录3.4插入数据3.5更新数据3.6删除数据3.7关闭连接四、错误处理五、高级操作5.1使用事务5.2处理大型结果</div> </li> <li><a href="/article/1883203949977202688.htm" title="Python Pandas数据清洗与处理" target="_blank">Python Pandas数据清洗与处理</a> <span class="text-muted">大数据张老师</span> <a class="tag" taget="_blank" href="/search/Python%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/1.htm">Python程序设计</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>PythonPandas数据清洗与处理在进行数据分析时,原始数据往往包含了许多不完整、不准确或者冗余的信息。数据清洗与处理的任务就是将这些杂乱无章的数据清理干净,确保数据的准确性和一致性,从而为后续的分析工作打下坚实的基础。Pandas提供了强大的工具来帮助我们清洗和处理数据,尤其是在处理Series和DataFrame时,它能够高效地进行数据的筛选、填充、删除、替换等操作。本节将通过一些常见的数</div> </li> <li><a href="/article/29.htm" title="SQL的各种连接查询" target="_blank">SQL的各种连接查询</a> <span class="text-muted">xieke90</span> <a class="tag" taget="_blank" href="/search/UNION+ALL/1.htm">UNION ALL</a><a class="tag" taget="_blank" href="/search/UNION/1.htm">UNION</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E8%BF%9E%E6%8E%A5/1.htm">外连接</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E8%BF%9E%E6%8E%A5/1.htm">内连接</a><a class="tag" taget="_blank" href="/search/JOIN/1.htm">JOIN</a> <div>一、内连接   概念:内连接就是使用比较运算符根据每个表共有的列的值匹配两个表中的行。                 内连接(join 或者inner join )       SQL语法:       select * fron</div> </li> <li><a href="/article/156.htm" title="java编程思想--复用类" target="_blank">java编程思想--复用类</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/%E7%BB%A7%E6%89%BF/1.htm">继承</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86/1.htm">代理</a><a class="tag" taget="_blank" href="/search/%E7%BB%84%E5%90%88/1.htm">组合</a><a class="tag" taget="_blank" href="/search/final%E7%B1%BB/1.htm">final类</a> <div>      复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书   一:组合语法:就是将对象的引用放到新类中即可     代码:     package com.wj.reuse; /** * * @author Administrator 组</div> </li> <li><a href="/article/283.htm" title="[开源与生态系统]国产CPU的生态系统" target="_blank">[开源与生态系统]国产CPU的生态系统</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/cpu/1.htm">cpu</a> <div>       计算机要从娃娃抓起...而孩子最喜欢玩游戏....       要让国产CPU在国内市场形成自己的生态系统和产业链,国家和企业就不能够忘记游戏这个非常关键的环节....       投入一些资金和资源,人力和政策,让游</div> </li> <li><a href="/article/410.htm" title="JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释" target="_blank">JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释</a> <span class="text-muted">商人shang</span> <a class="tag" taget="_blank" href="/search/jvm%E5%86%85%E5%AD%98/1.htm">jvm内存</a> <div>jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。 HotSpot虚拟机GC算法采用分代收</div> </li> <li><a href="/article/537.htm" title="页面上调用 QQ" target="_blank">页面上调用 QQ</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a> <div><A href="tencent://message/?uin=707321921&amp;Site=有事Q我&amp;Menu=yes">   <img style="border:0px;" src=http://wpa.qq.com/pa?p=1:707321921:1></a></div> </li> <li><a href="/article/664.htm" title="一些问题" target="_blank">一些问题</a> <span class="text-muted">文强chu</span> <a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a> <div>1.eclipse 导出 doc  出现“The Javadoc command does not exist.” javadoc command 选择 jdk/bin/javadoc.exe 2.tomcate 配置 web 项目 ..... SQL:3.mysql  * 必须得放前面 否则  select&nbs</div> </li> <li><a href="/article/791.htm" title="生活没有安全感" target="_blank">生活没有安全感</a> <span class="text-muted">小桔子</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E5%AD%A4%E7%8B%AC/1.htm">孤独</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%84%9F/1.htm">安全感</a> <div>       圈子好小,身边朋友没几个,交心的更是少之又少。在深圳,除了男朋友,没几个亲密的人。不知不觉男朋友成了唯一的依靠,毫不夸张的说,业余生活的全部。现在感情好,也很幸福的。但是说不准难免人心会变嘛,不发生什么大家都乐融融,发生什么很难处理。我想说如果不幸被分手(无论原因如何),生活难免变化很大,在深圳,我没交心的朋友。明</div> </li> <li><a href="/article/918.htm" title="php 基础语法" target="_blank">php 基础语法</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/php+%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95/1.htm">php 基本语法</a> <div>1 .1 php变量必须以$开头 <?php $a=” b”; echo ?> 1 .2 php基本数据库类型 Integer  float/double Boolean string 1 .3 复合数据类型 数组array和对象 object 1 .4 特殊数据类型  null 资源类型(resource)    $co</div> </li> <li><a href="/article/1045.htm" title="mybatis tools 配置详解" target="_blank">mybatis tools 配置详解</a> <span class="text-muted">AILIKES</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。 本文使用Markdown进行编辑,但是博客显示效</div> </li> <li><a href="/article/1172.htm" title="继承与多态的探讨" target="_blank">继承与多态的探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/JAVA%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1+%E7%BB%A7%E6%89%BF+%E5%AF%B9%E8%B1%A1/1.htm">JAVA面向对象 继承 对象</a> <div>继承 extends   多态 继承是面向对象最经常使用的特征之一:继承语法是通过继承发、基类的域和方法 //继承就是从现有的类中生成一个新的类,这个新类拥有现有类的所有extends是使用继承的关键字:     在A类中定义属性和方法; class A{ //定义属性 int age; //定义方法 public void go</div> </li> <li><a href="/article/1299.htm" title="JS的undefined与null的实例" target="_blank">JS的undefined与null的实例</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div><form name="theform" id="theform"> </form> <script language="javascript"> var a alert(typeof(b)); //这里提示undefined if(theform.datas</div> </li> <li><a href="/article/1426.htm" title="TDD实践(一)" target="_blank">TDD实践(一)</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/%E6%95%8F%E6%8D%B7/1.htm">敏捷</a><a class="tag" taget="_blank" href="/search/TDD/1.htm">TDD</a> <div>一.TDD概述         TDD:测试驱动开发,它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。     </div> </li> <li><a href="/article/1553.htm" title="[Maven学习笔记十]Maven Profile与资源文件过滤器" target="_blank">[Maven学习笔记十]Maven Profile与资源文件过滤器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>什么是Maven Profile Maven Profile的含义是针对编译打包环境和编译打包目的配置定制,可以在不同的环境上选择相应的配置,例如DB信息,可以根据是为开发环境编译打包,还是为生产环境编译打包,动态的选择正确的DB配置信息   Profile的激活机制 1.Profile可以手工激活,比如在Intellij Idea的Maven Project视图中可以选择一个P</div> </li> <li><a href="/article/1680.htm" title="【Hive八】Hive用户自定义生成表函数(UDTF)" target="_blank">【Hive八】Hive用户自定义生成表函数(UDTF)</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a> <div>1. 什么是UDTF   UDTF,是User Defined Table-Generating Functions,一眼看上去,貌似是用户自定义生成表函数,这个生成表不应该理解为生成了一个HQL Table, 貌似更应该理解为生成了类似关系表的二维行数据集   2. 如何实现UDTF 继承org.apache.hadoop.hive.ql.udf.generic</div> </li> <li><a href="/article/1807.htm" title="tfs restful api 加auth 2.0认计" target="_blank">tfs restful api 加auth 2.0认计</a> <span class="text-muted">ronin47</span> <div>  目前思考如何给tfs的ngx-tfs api增加安全性。有如下两点:   一是基于客户端的ip设置。这个比较容易实现。   二是基于OAuth2.0认证,这个需要lua,实现起来相对于一来说,有些难度。   现在重点介绍第二种方法实现思路。    前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGe</div> </li> <li><a href="/article/1934.htm" title="jdk环境变量配置" target="_blank">jdk环境变量配置</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a> <div>进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置: 1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-7u79-windows-x64.exe 2、安装jdk-7u79-windows-x64.exe 3、配置环境变量:右击"计算机"-->&quo</div> </li> <li><a href="/article/2061.htm" title="《代码大全》表驱动法-Table Driven Approach-2" target="_blank">《代码大全》表驱动法-Table Driven Approach-2</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>package com.ljn.base; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.uti</div> </li> <li><a href="/article/2188.htm" title="SQL 数值四舍五入 小数点后保留2位" target="_blank">SQL 数值四舍五入 小数点后保留2位</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/%E5%9B%9B%E8%88%8D%E4%BA%94%E5%85%A5/1.htm">四舍五入</a> <div> 1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。 2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。 例如:   select   cast(round(12.5,2)   as   numeric(5,2))  </div> </li> <li><a href="/article/2315.htm" title="c++运算符重载" target="_blank">c++运算符重载</a> <span class="text-muted">CrazyMizzz</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a> <div>一、加+,减-,乘*,除/ 的运算符重载 Rational operator*(const Rational &x) const{ return Rational(x.a * this->a); } 在这里只写乘法的,加减除的写法类似 二、<<输出,>>输入的运算符重载      &nb</div> </li> <li><a href="/article/2442.htm" title="hive DDL语法汇总" target="_blank">hive DDL语法汇总</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9%E5%88%97/1.htm">修改列</a><a class="tag" taget="_blank" href="/search/DDL/1.htm">DDL</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9%E8%A1%A8/1.htm">修改表</a> <div>hive DDL语法汇总 1、对表重命名 hive> ALTER TABLE table_name RENAME TO new_table_name;   2、修改表备注 hive> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comm</div> </li> <li><a href="/article/2569.htm" title="jbox使用说明" target="_blank">jbox使用说明</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a> <div>参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [ 点击下载]  技术交流QQGroup:172543951 100521167 [2011-11-11] jBox v2.3 正式版 - [调整&修复] IE6下有iframe或页面有active、applet控件</div> </li> <li><a href="/article/2696.htm" title="UISegmentedControl 开发笔记" target="_blank">UISegmentedControl 开发笔记</a> <span class="text-muted">dcj3sjt126com</span> <div>  //    typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {     //        UISegmentedControlStylePlain,     // large plain   &</div> </li> <li><a href="/article/2823.htm" title="Slick生成表映射文件" target="_blank">Slick生成表映射文件</a> <span class="text-muted">ekian</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包 "com.typesafe.slick" %% "slick-codegen" % slickVersion 因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包 "com.typesa</div> </li> <li><a href="/article/2950.htm" title="ES-TEST" target="_blank">ES-TEST</a> <span class="text-muted">gengzg</span> <a class="tag" taget="_blank" href="/search/test/1.htm">test</a> <div>package com.MarkNum; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation</div> </li> <li><a href="/article/3077.htm" title="为何外键不再推荐使用" target="_blank">为何外键不再推荐使用</a> <span class="text-muted">hugh.wang</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/DB/1.htm">DB</a> <div>表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。 在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不</div> </li> <li><a href="/article/3204.htm" title="领域驱动设计" target="_blank">领域驱动设计</a> <span class="text-muted">julyflame</span> <a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><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/DTO/1.htm">DTO</a><a class="tag" taget="_blank" href="/search/po/1.htm">po</a> <div>概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对</div> </li> <li><a href="/article/3331.htm" title="单例设计模式" target="_blank">单例设计模式</a> <span class="text-muted">hm4123660</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Singleton/1.htm">Singleton</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">单例设计模式</a><a class="tag" taget="_blank" href="/search/%E6%87%92%E6%B1%89%E5%BC%8F/1.htm">懒汉式</a><a class="tag" taget="_blank" href="/search/%E9%A5%BF%E6%B1%89%E5%BC%8F/1.htm">饿汉式</a> <div>       单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。      &nb</div> </li> <li><a href="/article/3458.htm" title="logback" target="_blank">logback</a> <span class="text-muted">zhb8015</span> <a class="tag" taget="_blank" href="/search/log/1.htm">log</a><a class="tag" taget="_blank" href="/search/logback/1.htm">logback</a> <div>一、logback的介绍      Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class</div> </li> <li><a href="/article/3585.htm" title="整合Kafka到Spark Streaming——代码示例和挑战" target="_blank">整合Kafka到Spark Streaming——代码示例和挑战</a> <span class="text-muted">Stark_Summer</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/storm/1.htm">storm</a><a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a><a class="tag" taget="_blank" href="/search/PARALLELISM/1.htm">PARALLELISM</a><a class="tag" taget="_blank" href="/search/processing/1.htm">processing</a> <div>作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版</div> </li> <li><a href="/article/3712.htm" title="spring-master-slave-commondao" target="_blank">spring-master-slave-commondao</a> <span class="text-muted">王新春</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a><a class="tag" taget="_blank" href="/search/slave/1.htm">slave</a><a class="tag" taget="_blank" href="/search/master/1.htm">master</a> <div>互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。 为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数</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>