mac 环境下 Scrapy 入门

文章目录

    • 安装
    • 步骤
      • 新建爬虫项目 - scrapy startproject
      • 明确数据目标 - disease/items.py
      • 制作网页爬虫 - spiders/MedicaldataSpider.py
          • 创建爬虫
          • 配置爬虫
          • 取数据
          • 提取其他信息
          • 保存数据


安装

sudo pip install scrapy

python3环境配置


步骤

  • 新建爬虫项目 (scrapy startproject name)
  • 明确数据目标 (编写 items.py)
  • 制作网页爬虫 (spiders/xxspider.py)
  • 存储爬取内容 (pipelines.py)

新建爬虫项目 - scrapy startproject

终端进入项目目录

scrapy startproject spiderName
spiderName - 项目名称

系统创建一个 spiderName 文件夹,目录结构:

spiderName/
    scrapy.cfg                项目配置文件
    spiderName/               Python模块 - 从这里引用代码
        __init__.py
        items.py              目标文件
        pipelines.py
        settings.py           设置文件
        spiders/              存储爬虫代码目录
            __init__.py
            ...

明确数据目标 - disease/items.py

目标:抓取 http://yao.xywy.com/class/4-0-0-1-0-1.htm 网站里的药品的名称、生产公司和功能主治

打开 disease 目录下的 items.py

  • Item 定义结构化数据字段,用来保存爬取到的数据
    scrapy.Item 创建一个类
    scrapy.Field 定义类型类属性

创建一个 MedicaldataItem 类,构建 item 模型

import scrapy

class MedicaldataItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name = scrapy.Field()  # 药品名称
    company = scrapy.Field()  # 生产公司
    function = scrapy.Field()  # 功能主治
    


制作网页爬虫 - spiders/MedicaldataSpider.py

爬虫功能 : 爬 => 取


创建爬虫

创建一个名为Medicaldata的爬虫,并指定爬取域的范围:
cd disease

scrapy genspider Medicaldata "http://yao.xywy.com"

打开 disease/spider目录里的 Medicaldata.py,默认增加了下列代码:

import scrapy

class MedicaldataSpider(scrapy.Spider):
    name = 'Medicaldata'
    allowed_domains = ['yao.xywy.com']
    start_urls = ['http://yao.xywy.com']

    def parse(self, response):
        pass

用scrapy.Spider类创建一个子类来建立一个Spider,其下有三个强制的属性 和 一个方法。

  • name = “”
    爬虫的唯一识别名称

  • allow_domains = []
    搜索的域名范围
    规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略。

  • start_urls = ()
    爬取起始URL
    爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些元祖URL中继承性生成。

  • parse(self, response)
    解析的方法
    URL传回Response对象作为唯一参数,用来

    1. 解析返回的网页数据(response.body)
    2. 提取结构化数据(生成item)
    3. 生成需要下一页的URL请求。


配置爬虫

将start_urls的值修改为需要爬取的第一个url

start_urls = ['http://yao.xywy.com/class/4-0-0-1-0-1.htm']

修改parse()方法

def parse(self, response):
    filename = "drug.html"
    open(filename, 'wb').write(response.body)

原文为 open(filename, ‘w’).write(response.body)
报错
TypeError: write() argument must be str, not bytes
python3 w为写字符,wb为二进制

参考:https://blog.csdn.net/kingyuan666/article/details/81214954

在disease目录下执行:
scrapy crawl Medicaldata

[scrapy] INFO: Spider closed (finished) 执行完成
drug.html 中为爬取网页的源代码



取数据

爬取整个网页完毕,接下来进行取数据

获取 xpath 地址
利用 Chrome
右键 => 检查 => copy => copy xpath

mac 环境下 Scrapy 入门_第1张图片
xpath:
/html/body/div[6]/div[2]/div[1]/a

XPath 表达式简例

/html/head/title: 选择HTML文档中  标签内的  元素
/html/head/title/text(): 选择上面提到的 <title> 元素的文字
//td: 选择所有的 <td> 元素
//div[@class="mine"]: 选择所有具有 class="mine" 属性的 div 元素
</code></pre> 
  <p>举例 - 读取网站 http://yao.xywy.com/ 的网站标题,</p> 
  <p>Medicaldata.py 文件代码如下:</p> 
  <pre><code class="prism language-py"><span class="token keyword">import</span> scrapy

<span class="token keyword">class</span> <span class="token class-name">MedicaldataSpider</span><span class="token punctuation">(</span>scrapy<span class="token punctuation">.</span>Spider<span class="token punctuation">)</span><span class="token punctuation">:</span>
    name <span class="token operator">=</span> <span class="token string">'Medicaldata'</span>
    allowed_domains <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'yao.xywy.com'</span><span class="token punctuation">]</span>
    start_urls <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">'http://yao.xywy.com/class/4-0-0-1-0-1.htm'</span><span class="token punctuation">]</span>

    <span class="token keyword">def</span> <span class="token function">parse</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> response<span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token comment"># 获取网站标题</span>
        context <span class="token operator">=</span> response<span class="token punctuation">.</span>xpath<span class="token punctuation">(</span><span class="token string">'/html/head/title/text()'</span><span class="token punctuation">)</span>
        
        <span class="token comment"># 提取网站标题</span>
        title <span class="token operator">=</span> context<span class="token punctuation">.</span>extract_first<span class="token punctuation">(</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span>title<span class="token punctuation">)</span>
        <span class="token keyword">pass</span>
</code></pre> 
  <p>执行以下命令:</p> 
  <p><code>scrapy crawl Medicaldata</code><br> …<br> …<br> 中西药品_寻医问药药品网<br> …<br> …</p> 
  <br> 
  <hr> 
  <h5>提取其他信息</h5> 
  <p>引入在 disease/items.py 里定义的 MedicaldataItem 类<br> 然后将得到的数据封装到一个 MedicaldataItem 对象中</p> 
  <blockquote> 
   <p>注意缩进</p> 
  </blockquote> 
  <pre><code class="prism language-py"><span class="token keyword">from</span> disease<span class="token punctuation">.</span>items <span class="token keyword">import</span> MedicaldataItem

<span class="token keyword">def</span> <span class="token function">parse</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span> response<span class="token punctuation">)</span><span class="token punctuation">:</span>
        
        <span class="token comment"># 存放疾病信息的集合</span>
        items <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>
        
        <span class="token keyword">for</span> each <span class="token keyword">in</span> response<span class="token punctuation">.</span>xpath<span class="token punctuation">(</span><span class="token string">'//div[@class="h-drugs-item"]'</span><span class="token punctuation">)</span><span class="token punctuation">:</span>
            <span class="token comment"># 将我们得到的数据封装到一个 `ItcastItem` 对象</span>
            item <span class="token operator">=</span> MedicaldataItem<span class="token punctuation">(</span><span class="token punctuation">)</span>
            <span class="token comment">#extract()方法返回的都是unicode字符串</span>
            name <span class="token operator">=</span> each<span class="token punctuation">.</span>xpath<span class="token punctuation">(</span><span class="token string">'div/a/@target'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>extract<span class="token punctuation">(</span><span class="token punctuation">)</span>
            company <span class="token operator">=</span> each<span class="token punctuation">.</span>xpath<span class="token punctuation">(</span><span class="token string">'div/span/text()'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>extract<span class="token punctuation">(</span><span class="token punctuation">)</span>
            function <span class="token operator">=</span> each<span class="token punctuation">.</span>xpath<span class="token punctuation">(</span><span class="token string">'div[2]/div[2]/div[2]/text()'</span><span class="token punctuation">)</span><span class="token punctuation">.</span>extract<span class="token punctuation">(</span><span class="token punctuation">)</span>
            
            <span class="token comment">#xpath返回的是包含一个元素的列表</span>
            item<span class="token punctuation">[</span><span class="token string">'name'</span><span class="token punctuation">]</span> <span class="token operator">=</span> name<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
            item<span class="token punctuation">[</span><span class="token string">'company'</span><span class="token punctuation">]</span> <span class="token operator">=</span> company<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
            item<span class="token punctuation">[</span><span class="token string">'function'</span><span class="token punctuation">]</span> <span class="token operator">=</span> function<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span>
            
            items<span class="token punctuation">.</span>append<span class="token punctuation">(</span>item<span class="token punctuation">)</span>

        <span class="token comment"># 直接返回最后数据</span>
        <span class="token keyword">return</span> items

</code></pre> 
  <br> 
  <hr> 
  <h5>保存数据</h5> 
  <p>-o 输出指定格式的文件,命令如下:</p> 
  <ul> 
   <li> <p>json 格式<br> <code>scrapy crawl Medicaldata -o drug.json</code></p> </li> 
   <li> <p>json lines格式,默认为Unicode编码<br> <code>scrapy crawl Medicaldata -o drug.json</code></p> </li> 
   <li> <p>csv 逗号表达式,可用Excel打开<br> <code>scrapy crawl Medicaldata -o drug.csv</code></p> </li> 
   <li> <p>xml格式<br> <code>scrapy crawl Medicaldata -o drug.xml</code></p> </li> 
  </ul> 
  <p>ERROR<br> scrapy 爬虫返回 json格式内容为 unicode 编码<br> <a href="http://img.e-com-net.com/image/info8/a45e30ce5b584cf6b709db09ae2cdebb.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a45e30ce5b584cf6b709db09ae2cdebb.jpg" alt="mac 环境下 Scrapy 入门_第2张图片" width="650" height="178" style="border:1px solid black;"></a><br> <em>解决方案</em><br> 在settings.py文件中增加一行,导出时强制为’utf-8’即可转换为中文<br> <code>FEED_EXPORT_ENCODING = 'utf-8'</code><br> http://www.cnblogs.com/mrtop/p/10185507.html</p> 
  <p>爬取数据成功:<br> <a href="http://img.e-com-net.com/image/info8/43539fa8b6984dbea4f006bba8b423e5.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/43539fa8b6984dbea4f006bba8b423e5.jpg" alt="mac 环境下 Scrapy 入门_第3张图片" width="650" height="186" style="border:1px solid black;"></a></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1306301449814183936"></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">你可能感兴趣的:(网络爬虫,scrapy,mac)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1835513803861749760.htm"
                           title="机器学习与深度学习间关系与区别" target="_blank">机器学习与深度学习间关系与区别</a>
                        <span class="text-muted">ℒℴѵℯ心·动ꦿ໊ོ꫞</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%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/python/1.htm">python</a>
                        <div>一、机器学习概述定义机器学习(MachineLearning,ML)是一种通过数据驱动的方法,利用统计学和计算算法来训练模型,使计算机能够从数据中学习并自动进行预测或决策。机器学习通过分析大量数据样本,识别其中的模式和规律,从而对新的数据进行判断。其核心在于通过训练过程,让模型不断优化和提升其预测准确性。主要类型1.监督学习(SupervisedLearning)监督学习是指在训练数据集中包含输入</div>
                    </li>
                    <li><a href="/article/1835502578050363392.htm"
                           title="PHP环境搭建详细教程" target="_blank">PHP环境搭建详细教程</a>
                        <span class="text-muted">好看资源平台</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这</div>
                    </li>
                    <li><a href="/article/1835484672059076608.htm"
                           title="mac电脑命令行获取电量" target="_blank">mac电脑命令行获取电量</a>
                        <span class="text-muted">小米人er</span>
<a class="tag" taget="_blank" href="/search/%E6%88%91%E7%9A%84%E5%8D%9A%E5%AE%A2/1.htm">我的博客</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/%E5%91%BD%E4%BB%A4%E8%A1%8C/1.htm">命令行</a>
                        <div>在macOS上,有几个命令行工具可以用来获取电量信息,最常用的是pmset命令。你可以通过以下方式来查看电池状态和电量信息:查看电池状态:pmset-gbatt这个命令会返回类似下面的输出:Nowdrawingfrom'BatteryPower'-InternalBattery-0(id=1234567)95%;discharging;4:02remainingpresent:true输出中包括电</div>
                    </li>
                    <li><a href="/article/1835482277870661632.htm"
                           title="简介Shell、zsh、bash" target="_blank">简介Shell、zsh、bash</a>
                        <span class="text-muted">zhaosuningsn</span>
<a class="tag" taget="_blank" href="/search/Shell/1.htm">Shell</a><a class="tag" taget="_blank" href="/search/zsh/1.htm">zsh</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a><a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/bash/1.htm">bash</a>
                        <div>Shell是Linux和Unix的外壳,类似衣服,负责外界与Linux和Unix内核的交互联系。例如接收终端用户及各种应用程序的命令,把接收的命令翻译成内核能理解的语言,传递给内核,并把内核处理接收的命令的结果返回给外界,即Shell是外界和内核沟通的桥梁或大门。Linux和Unix提供了多种Shell,其中有种bash,当然还有其他好多种。Mac电脑中不但有bash,还有一个zsh,预装的,据说</div>
                    </li>
                    <li><a href="/article/1835473830873755648.htm"
                           title="简单了解 JVM" target="_blank">简单了解 JVM</a>
                        <span class="text-muted">记得开心一点啊</span>
<a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a>
                        <div>目录♫什么是JVM♫JVM的运行流程♫JVM运行时数据区♪虚拟机栈♪本地方法栈♪堆♪程序计数器♪方法区/元数据区♫类加载的过程♫双亲委派模型♫垃圾回收机制♫什么是JVMJVM是JavaVirtualMachine的简称,意为Java虚拟机。虚拟机是指通过软件模拟的具有完整硬件功能的、运行在一个完全隔离的环境中的完整计算机系统(如:JVM、VMwave、VirtualBox)。JVM和其他两个虚拟机</div>
                    </li>
                    <li><a href="/article/1835472530849230848.htm"
                           title="最超值的Mac——Mac mini" target="_blank">最超值的Mac——Mac mini</a>
                        <span class="text-muted">初心么么哒</span>

                        <div>你知道最超值的Mac是什么吗?自2005年以来,Macmini一直是Apple台式机产品线中的主要产品。最初推出是为了让对Mac好奇的Mac进入Apple生态系统的一种简单方式,现在新的AppleSiliconMacmini可能是任何寻找新Mac的人的最有吸引力的购买。什么是AppleSiliconMacmini?M1Macmini是Apple最小的台式电脑,同时也是最快的台式电脑之一。最新型号由</div>
                    </li>
                    <li><a href="/article/1835468916290318336.htm"
                           title="JVM、JRE和 JDK:理解Java开发的三大核心组件" target="_blank">JVM、JRE和 JDK:理解Java开发的三大核心组件</a>
                        <span class="text-muted">Y雨何时停T</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>Java是一门跨平台的编程语言,它的成功离不开背后强大的运行环境与开发工具的支持。在Java的生态中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个至关重要的核心组件。本文将探讨JVM、JDK和JRE的区别,帮助你更好地理解Java的运行机制。1.JVM:Java虚拟机(JavaVirtualMachine)什么是JVM?JVM,即Java虚拟机,是Ja</div>
                    </li>
                    <li><a href="/article/1835456812720156672.htm"
                           title="网络通信流程" target="_blank">网络通信流程</a>
                        <span class="text-muted">记得开心一点啊</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>目录♫IP地址♫子网掩码♫MAC地址♫相关设备♫ARP寻址♫网络通信流程♫IP地址我们已经知道IP地址由网络号+主机号组成,根据IP地址的不同可以有5钟划分网络号和主机号的方案:其中,各类地址的表示范围是:分类范围适用网络网络数量主机最大连接数A类0.0.0.0~127.255.255.255大型网络12616777214【(2^24)-2】B类128.0.0.0~191.255.255.255中</div>
                    </li>
                    <li><a href="/article/1835454921990828032.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/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BB%BB%E5%8A%A1/1.htm">任务</a><a class="tag" taget="_blank" href="/search/html%E8%A7%A3%E6%9E%90%E5%99%A8/1.htm">html解析器</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8/1.htm">存储</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1/1.htm">电子商务</a>
                        <div>一、架构图那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引。爬虫:爬虫负责爬取,解析,处理电子商务网站的网页的内容数据库:存储商品信息索引:商品的全文搜索索引Task队列:需要爬取的网页列表Visited表:已经爬取过的网页列表爬虫监控平台:web平台可以启动,停止爬虫,管理爬虫,task队列,visited表。二、爬虫1.流程1)Scheduler启动爬虫器,TaskMast</div>
                    </li>
                    <li><a href="/article/1835450889452744704.htm"
                           title="mac 备份android 手机通讯录导入iphone,iphone如何导出通讯录(轻松教你iPhone备份通讯录的方法)..." target="_blank">mac 备份android 手机通讯录导入iphone,iphone如何导出通讯录(轻松教你iPhone备份通讯录的方法)...</a>
                        <span class="text-muted">weixin_39762838</span>
<a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/%E5%A4%87%E4%BB%BDandroid/1.htm">备份android</a><a class="tag" taget="_blank" href="/search/%E6%89%8B%E6%9C%BA%E9%80%9A%E8%AE%AF%E5%BD%95%E5%AF%BC%E5%85%A5iphone/1.htm">手机通讯录导入iphone</a>
                        <div>在日新月异的手机更替中,换手机已经成为一个非常稀松平常的事情,但将旧手机上面的通讯录导入到新手机还是让不少小伙伴为难,本篇将给大家详细讲解这方面的知识:“苹果手机通讯录怎么导入到新手机”及“安卓手机通讯录导入到新手机”的方法。一、苹果手机通讯录导入到新手机常用方法(SIM卡导入)在苹果手机主频幕上找到“设置”,单击进入设置菜单,下拉菜单列表,点击“邮件、通讯录、日历”,然后找到“导入SIM卡通讯录</div>
                    </li>
                    <li><a href="/article/1835438028009598976.htm"
                           title="WebMagic:强大的Java爬虫框架解析与实战" target="_blank">WebMagic:强大的Java爬虫框架解析与实战</a>
                        <span class="text-muted">Aaron_945</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>文章目录引言官网链接WebMagic原理概述基础使用1.添加依赖2.编写PageProcessor高级使用1.自定义Pipeline2.分布式抓取优点结论引言在大数据时代,网络爬虫作为数据收集的重要工具,扮演着不可或缺的角色。Java作为一门广泛使用的编程语言,在爬虫开发领域也有其独特的优势。WebMagic是一个开源的Java爬虫框架,它提供了简单灵活的API,支持多线程、分布式抓取,以及丰富的</div>
                    </li>
                    <li><a href="/article/1835435506645692416.htm"
                           title="00. 这里整理了最全的爬虫框架(Java + Python)" target="_blank">00. 这里整理了最全的爬虫框架(Java + Python)</a>
                        <span class="text-muted">有一只柴犬</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E7%B3%BB%E5%88%97/1.htm">爬虫系列</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2</div>
                    </li>
                    <li><a href="/article/1835412560413814784.htm"
                           title="python爬取微信小程序数据,python爬取小程序数据" target="_blank">python爬取微信小程序数据,python爬取小程序数据</a>
                        <span class="text-muted">2301_81900439</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>大家好,小编来为大家解答以下问题,python爬取微信小程序数据,python爬取小程序数据,现在让我们一起来看看吧!Python爬虫系列之微信小程序实战基于Scrapy爬虫框架实现对微信小程序数据的爬取首先,你得需要安装抓包工具,这里推荐使用Charles,至于怎么使用后期有时间我会出一个事例最重要的步骤之一就是分析接口,理清楚每一个接口功能,然后连接起来形成接口串思路,再通过Spider的回调</div>
                    </li>
                    <li><a href="/article/1835412182377000960.htm"
                           title="信息系统安全相关概念(上)" target="_blank">信息系统安全相关概念(上)</a>
                        <span class="text-muted">YuanDaima2048</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E7%AC%94%E8%AE%B0/1.htm">课程笔记</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5/1.htm">基础概念</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8/1.htm">信息安全</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>文章总览:YuanDaiMa2048博客文章总览下篇:信息系统安全相关概念(下)信息系统安全相关概念[上]信息系统概述信息系统信息系统架构信息系统发展趋势:信息系统日趋大型化、复杂化信息系统面临的安全威胁信息系统安全架构设计--以云计算为例信息系统安全需求及安全策略自主访问控制策略DAC强制访问控制策略MAC信息系统概述信息系统用于收集、存储和处理数据以及传递信息、知识和数字产品的一组集成组件。几</div>
                    </li>
                    <li><a href="/article/1835375495567470592.htm"
                           title="如何在电商平台上使用API接口数据优化商品价格" target="_blank">如何在电商平台上使用API接口数据优化商品价格</a>
                        <span class="text-muted">weixin_43841111</span>
<a class="tag" taget="_blank" href="/search/api/1.htm">api</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</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/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>利用API接口数据来优化电商商品价格是一个涉及数据收集、分析、策略制定以及实时调整价格的过程。这不仅能提高市场竞争力,还能通过精准定价最大化利润。以下是一些关键步骤和策略,用于通过API接口数据优化电商商品价格:1.数据收集竞争对手价格监控:使用API接口(如Scrapy、BeautifulSoup等工具结合Python进行网页数据抓取,或使用专门的API服务如PriceIntelligence、</div>
                    </li>
                    <li><a href="/article/1835367123006877696.htm"
                           title="macOs mojave 添加hp laserjet 1020 打印机方法。" target="_blank">macOs mojave 添加hp laserjet 1020 打印机方法。</a>
                        <span class="text-muted">Coder_Zh</span>

                        <div>1.设置--》打印机与扫描仪。2.点击“+”选择IP3.输入地址:(写网络IP),协议选择:hpjetdirect-socket4.使用选项:选择hplaserjet10221.6(没有1020的驱动,但是1022的驱动兼容1020可以使用。)测试OK,可以使用。</div>
                    </li>
                    <li><a href="/article/1835342718067372032.htm"
                           title="Python精选200Tips:121-125" target="_blank">Python精选200Tips:121-125</a>
                        <span class="text-muted">AnFany</span>
<a class="tag" taget="_blank" href="/search/Python200%2BTips/1.htm">Python200+Tips</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>Spendyourtimeonself-improvement121Requests-简化的HTTP请求处理发送GET请求发送POST请求发送PUT请求发送DELETE请求会话管理处理超时文件上传122BeautifulSoup-网页解析和抓取解析HTML和XML文档查找单个标签查找多个标签使用CSS选择器查找标签提取文本修改文档内容删除标签处理XML文档123Scrapy-强大的网络爬虫框架示例</div>
                    </li>
                    <li><a href="/article/1835335283227324416.htm"
                           title="Python程序打包指南:手把手教你一步步完成" target="_blank">Python程序打包指南:手把手教你一步步完成</a>
                        <span class="text-muted">Python_P叔</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/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>最近感兴趣想将开发的项目转成Package,研究了一下相关文章,并且自己跑通了,走了一下弯路,这里记录一下如何打包一个简单的Python项目,展示如何添加必要的文件和结构来创建包,如何构建包,以及如何将其上传到Python包索引(PyPI)。首先要确保安装最新版本:#Unix/macOSpython3-mpipinstall--upgradepip#windowspy-mpipinstall--u</div>
                    </li>
                    <li><a href="/article/1835332888674004992.htm"
                           title="爬虫之隧道代理:如何在爬虫中使用代理IP?" target="_blank">爬虫之隧道代理:如何在爬虫中使用代理IP?</a>
                        <span class="text-muted">2401_87251497</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/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a>
                        <div>在进行网络爬虫时,使用代理IP是一种常见的方式来绕过网站的反爬虫机制,提高爬取效率和数据质量。本文将详细介绍如何在爬虫中使用隧道代理,包括其原理、优势以及具体的实现方法。无论您是爬虫新手还是有经验的开发者,这篇文章都将为您提供实用的指导。什么是隧道代理?隧道代理是一种高级的代理技术,它通过创建一个加密的隧道,将数据从客户端传输到代理服务器,再由代理服务器转发到目标服务器。这样不仅可以隐藏客户端的真</div>
                    </li>
                    <li><a href="/article/1835314779552575488.htm"
                           title="管理员权限的软件不能开机自启动的解决方法" target="_blank">管理员权限的软件不能开机自启动的解决方法</a>
                        <span class="text-muted">ss_ctrl</span>

                        <div>这是几种解决方法:1.将启动参数写入到32位注册表里面去在64位系统下我们64位的程序访问此HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册表路径,是可以正确访问的,32位程序访问此注册表路径时,默认会被系统自动映射到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft</div>
                    </li>
                    <li><a href="/article/1835302697079762944.htm"
                           title="golang学习笔记--MPG模型" target="_blank">golang学习笔记--MPG模型</a>
                        <span class="text-muted">xxzed</span>
<a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">学习笔记</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%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a>
                        <div>MPG模式:M(Machine):操作系统的主线程P(Processor):协程执行需要的资源(上下文context),可以看作一个局部的调度器,使go代码在一个线程上跑,他是实现从N:1到N:M映射的关键G(Goroutine):协程,有自己的栈。包含指令指针(instructionpointer)和其它信息(正在等待的channel等等),用于调度。一个P下面可以有多个G1、当前程序有三个M,</div>
                    </li>
                    <li><a href="/article/1835287325995790336.htm"
                           title="使用FPGA接收MIPI CSI RX信号并进行去抖动、RGB转YUV处理:FX3014 USB3.0 UVC传输与帧率控制源代码,FPGA实现MIPI CSI RX接收,去Debayer, RGB转" target="_blank">使用FPGA接收MIPI CSI RX信号并进行去抖动、RGB转YUV处理:FX3014 USB3.0 UVC传输与帧率控制源代码,FPGA实现MIPI CSI RX接收,去Debayer, RGB转</a>
                        <span class="text-muted">kVfINoSzdrt</span>
<a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a>
                        <div>fpgamipicsirx接收去debayer,rgb转yuv,fx3014usb3.0uvc传输与帧率控制源代码,具体架构看图,除dphy物理层外,mipi均为源码sensorimx219mipi源码mipi4lanecsirxraw10fpgamachXO3lf-690usb3.0fx301432bityuvdatawithframesync测试模式3280*246415fps1920*108</div>
                    </li>
                    <li><a href="/article/1835275229799215104.htm"
                           title="MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码" target="_blank">MacOS Catalina 从源码构建Qt6.2开发库之01: 编译Qt6.2源代码</a>
                        <span class="text-muted">捕鲸叉</span>
<a class="tag" taget="_blank" href="/search/QT/1.htm">QT</a><a class="tag" taget="_blank" href="/search/macos/1.htm">macos</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/QT/1.htm">QT</a>
                        <div>安装xcode,cmake,ninjabrewinstallnodemac下安装OpenGL库并使之对各项目可见在macOS上安装OpenGL通常涉及到安装一些依赖库,如MGL、GLUT或者是GLEW等,同时确保LLVM的OpenGL框架和相关工具链的兼容性。以下是一个基本的安装步骤,你可以在终端中执行:安装Homebrew(如果还没有安装的话):/bin/bash-c"$(curl-fsSLht</div>
                    </li>
                    <li><a href="/article/1835245731506647040.htm"
                           title="两种方法判断Python的位数是32位还是64位" target="_blank">两种方法判断Python的位数是32位还是64位</a>
                        <span class="text-muted">sanqima</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BC%96%E7%A8%8B/1.htm">Python编程</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E8%84%91/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从1991年发布以来,凭借其简洁、清晰、易读的语法、丰富的标准库和第三方工具,在Web开发、自动化测试、人工智能、图形识别、机器学习等领域发展迅猛。  Python是一种胶水语言,通过Cython库与C/C++语言进行链接,通过Jython库与Java语言进行链接。  Python是跨平台的,可运行在多种操作系统上,包括但不限于Windows、Linux和macOS。这意味着用Py</div>
                    </li>
                    <li><a href="/article/1835231814474625024.htm"
                           title="Mac配置环境变量的地方" target="_blank">Mac配置环境变量的地方</a>
                        <span class="text-muted">哪个鹿</span>

                        <div>Mac配置环境变量的地方①/etc/profile(建议不修改这个文件)全局(公有)配置,不管是哪个用户,登录时都会读取该文件。②/etc/bashrc(一般在这个文件中添加系统级环境变量)全局(公有)配置,bashshell执行时,不管是何种方式,都会读取此文件。③~/.bash_profile(一般在这个文件中添加用户级环境变量)每个用户都可使用该文件输入专用于自己使用的shell信息,当用户</div>
                    </li>
                    <li><a href="/article/1835195687143305216.htm"
                           title="10- 【JavaWeb】Tomcat、Servlet基础" target="_blank">10- 【JavaWeb】Tomcat、Servlet基础</a>
                        <span class="text-muted">weixin_44329069</span>
<a class="tag" taget="_blank" href="/search/JavaWeb/1.htm">JavaWeb</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>1.MacOS配置Tomcat服务器教程MacOS配置Tomcat服务器教程2.Servlet基础1.创建ServletServlet是一个扩展服务器功能的Java类,主要用于处理HTTP请求。以下是一个简单的Servlet示例:importjava.io.IOException;importjavax.servlet.ServletException;importjavax.servlet.an</div>
                    </li>
                    <li><a href="/article/1835172191164002304.htm"
                           title="【开发环境搭建】Macbook M1搭建Java开发环境" target="_blank">【开发环境搭建】Macbook M1搭建Java开发环境</a>
                        <span class="text-muted">weixin_44329069</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>JDK安装与配置下载并安装JDK:ARM64DMG安装包下载链接:JDK21forMac(ARM64)。双击下载的DMG文件,按照提示安装JDK。配置环境变量:打开终端,使用vim编辑.bash_profile文件:vim~/.bash_profile在文件中添加以下内容来设置JAVA_HOME:exportJAVA_HOME=/Library/Java/JavaVirtualMachines/j</div>
                    </li>
                    <li><a href="/article/1835163750345306112.htm"
                           title="机器学习VS深度学习" target="_blank">机器学习VS深度学习</a>
                        <span class="text-muted">nfgo</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a>
                        <div>机器学习(MachineLearning,ML)和深度学习(DeepLearning,DL)是人工智能(AI)的两个子领域,它们有许多相似之处,但在技术实现和应用范围上也有显著区别。下面从几个方面对两者进行区分:1.概念层面机器学习:是让计算机通过算法从数据中自动学习和改进的技术。它依赖于手动设计的特征和数学模型来进行学习,常用的模型有决策树、支持向量机、线性回归等。深度学习:是机器学习的一个子领</div>
                    </li>
                    <li><a href="/article/1835157319500001280.htm"
                           title="Python爬虫代理池" target="_blank">Python爬虫代理池</a>
                        <span class="text-muted">极客李华</span>
<a class="tag" taget="_blank" href="/search/python%E6%8E%88%E8%AF%BE/1.htm">python授课</a><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>Python爬虫代理池网络爬虫在数据采集和信息抓取方面起到了关键作用。然而,为了应对网站的反爬虫机制和保护爬虫的真实身份,使用代理池变得至关重要。1.代理池的基本概念:代理池是一组包含多个代理IP地址的集合。通过在爬虫中使用代理池,我们能够隐藏爬虫的真实IP地址,实现一定程度的匿名性。这有助于防止被目标网站封锁或限制访问频率。2.为何使用代理池:匿名性:代理池允许爬虫在请求目标网站时使用不同的IP</div>
                    </li>
                    <li><a href="/article/1835155808384544768.htm"
                           title="联邦学习 Federated learning Google I/O‘19 笔记" target="_blank">联邦学习 Federated learning Google I/O‘19 笔记</a>
                        <span class="text-muted">努力搬砖的星期五</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E8%81%94%E9%82%A6%E5%AD%A6%E4%B9%A0/1.htm">联邦学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><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/tensorflow/1.htm">tensorflow</a>
                        <div>FederatedLearning:MachineLearningonDecentralizeddatahttps://www.youtube.com/watch?v=89BGjQYA0uE文章目录FederatedLearning:MachineLearningonDecentralizeddata1.DecentralizeddataEdgedevicesGboard:mobilekeyboa</div>
                    </li>
                                <li><a href="/article/43.htm"
                                       title="集合框架" target="_blank">集合框架</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/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E5%90%88%E6%A1%86%E6%9E%B6/1.htm">集合框架</a>
                                    <div>   集合框架 
集合框架可以理解为一个容器,该容器主要指映射(map)、集合(set)、数组(array)和列表(list)等抽象数据结构。 
从本质上来说,Java集合框架的主要组成是用来操作对象的接口。不同接口描述不同的数据类型。 
  
简单介绍: 
  
Collection接口是最基本的接口,它定义了List和Set,List又定义了LinkLi</div>
                                </li>
                                <li><a href="/article/170.htm"
                                       title="Table Driven(表驱动)方法实例" target="_blank">Table Driven(表驱动)方法实例</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/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/Table+Driven/1.htm">Table Driven</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E9%A9%B1%E5%8A%A8/1.htm">表驱动</a>
                                    <div>实例一:   
/**
 * 驾驶人年龄段
 * 保险行业,会对驾驶人的年龄做年龄段的区分判断
 * 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
 */
public class AgePeriodTest {

    //if...el</div>
                                </li>
                                <li><a href="/article/297.htm"
                                       title="Jquery 总结" target="_blank">Jquery 总结</a>
                                    <span class="text-muted">cuishikuan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/jquery%E6%96%B9%E6%B3%95/1.htm">jquery方法</a>
                                    <div>1.$.trim方法用于移除字符串头部和尾部多余的空格。如:$.trim('   Hello   ') // Hello2.$.contains方法返回一个布尔值,表示某个DOM元素(第二个参数)是否为另一个DOM元素(第一个参数)的下级元素。如:$.contains(document.documentElement, document.body); 3.$</div>
                                </li>
                                <li><a href="/article/424.htm"
                                       title="面向对象概念的提出" target="_blank">面向对象概念的提出</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/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/1.htm">面向对象</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E8%BF%87%E7%A8%8B/1.htm">面向过程</a>
                                    <div>   
     面向对象中,一切都是由对象展开的,组织代码,封装数据。 
  在台湾面向对象被翻译为了面向物件编程,这充分说明了,这种编程强调实体。 
  
    下面就结合编程语言的发展史,聊一聊面向过程和面向对象。 
     c语言由贝尔实</div>
                                </li>
                                <li><a href="/article/551.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>刚在一台IBM Xserver服务器上装了RedHat Linux Enterprise AS 4,为了提高网络的可靠性配置双网卡绑定。 
 
一、环境描述 
我的RedHat Linux Enterprise AS 4安装双口的Intel千兆网卡,通过ifconfig -a命令看到eth0和eth1两张网卡。 
 
二、双网卡绑定步骤: 
2.1 修改/etc/sysconfig/network</div>
                                </li>
                                <li><a href="/article/678.htm"
                                       title="XML基础语法" target="_blank">XML基础语法</a>
                                    <span class="text-muted">肆无忌惮_</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>一、什么是XML? 
XML全称是Extensible Markup Language,可扩展标记语言。很类似HTML。XML的目的是传输数据而非显示数据。XML的标签没有被预定义,你需要自行定义标签。XML被设计为具有自我描述性。是W3C的推荐标准。 
  
二、为什么学习XML? 
用来解决程序间数据传输的格式问题 
做配置文件 
充当小型数据库 
  
三、XML与HTM</div>
                                </li>
                                <li><a href="/article/805.htm"
                                       title="为网页添加自己喜欢的字体" target="_blank">为网页添加自己喜欢的字体</a>
                                    <span class="text-muted">知了ing</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%97%E4%BD%93+%E7%A7%92%E8%A1%A8+css/1.htm">字体 秒表 css</a>
                                    <div>@font-face {
			font-family: miaobiao;//定义字体名字
			font-style:  normal;
		    font-weight: 400;
			src: url('font/DS-DIGI-e.eot');//字体文件
		} 
使用: 
 
<label style="font-size:18px;font-famil</div>
                                </li>
                                <li><a href="/article/932.htm"
                                       title="redis范围查询应用-查找IP所在城市" target="_blank">redis范围查询应用-查找IP所在城市</a>
                                    <span class="text-muted">矮蛋蛋</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>原文地址: 
http://www.tuicool.com/articles/BrURbqV 
需求 
 
根据IP找到对应的城市 
 
原来的解决方案 
 
oracle表(ip_country): 
 
 
查询IP对应的城市: 
 
1.把a.b.c.d这样格式的IP转为一个数字,例如为把210.21.224.34转为3524648994 
 
2. select city from ip_</div>
                                </li>
                                <li><a href="/article/1059.htm"
                                       title="输入两个整数, 计算百分比" target="_blank">输入两个整数, 计算百分比</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>	public static String getPercent(int x, int total){
		 
		double result=(x*1.0)/(total*1.0);
		System.out.println(result);
		
		
		DecimalFormat df1=new DecimalFormat("0.0000%");
		
</div>
                                </li>
                                <li><a href="/article/1186.htm"
                                       title="百合——————>怎么学习计算机语言" target="_blank">百合——————>怎么学习计算机语言</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/java+%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">java 移动开发</a>
                                    <div>    对于一个从没有接触过计算机语言的人来说,一上来就学面向对象,就算是心里上面接受的了,灵魂我觉得也应该是跟不上的,学不好是很正常的现象,计算机语言老师讲的再多,你在课堂上面跟着老师听的再多,我觉得你应该还是学不会的,最主要的原因是你根本没有想过该怎么来学习计算机编程语言,记得大一的时候金山网络公司在湖大招聘我们学校一个才来大学几天的被金山网络录取,一个刚到大学的就能够去和</div>
                                </li>
                                <li><a href="/article/1313.htm"
                                       title="linux下tomcat开机自启动" target="_blank">linux下tomcat开机自启动</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
                                    <div>方法一: 
修改Tomcat/bin/startup.sh 为: 
export JAVA_HOME=/home/java1.6.0_27
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export PATH=$JAVA_HOME/bin:$PATH
export CATALINA_H</div>
                                </li>
                                <li><a href="/article/1440.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>1.AdviceMethods.java 
package com.bijian.study.spring.aop.schema;

public class AdviceMethods {

	public void preGreeting() {
		System.out.println("--how are you!--");
	}
} 
2.beans.x</div>
                                </li>
                                <li><a href="/article/1567.htm"
                                       title="[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization" target="_blank">[Gson八]GsonBuilder序列化和反序列化选项enableComplexMapKeySerialization</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/serialization/1.htm">serialization</a>
                                    <div>enableComplexMapKeySerialization配置项的含义 
 Gson在序列化Map时,默认情况下,是调用Key的toString方法得到它的JSON字符串的Key,对于简单类型和字符串类型,这没有问题,但是对于复杂数据对象,如果对象没有覆写toString方法,那么默认的toString方法将得到这个对象的Hash地址。 
  
GsonBuilder用于</div>
                                </li>
                                <li><a href="/article/1694.htm"
                                       title="【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题" target="_blank">【Spark九十一】Spark Streaming整合Kafka一些值得关注的问题</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a>
                                    <div>包括Spark Streaming在内的实时计算数据可靠性指的是三种级别: 
1. At most once,数据最多只能接受一次,有可能接收不到 
2. At least once, 数据至少接受一次,有可能重复接收 
3. Exactly once  数据保证被处理并且只被处理一次, 
  
具体的多读几遍http://spark.apache.org/docs/lates</div>
                                </li>
                                <li><a href="/article/1821.htm"
                                       title="shell脚本批量检测端口是否被占用脚本" target="_blank">shell脚本批量检测端口是否被占用脚本</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>#!/bin/bash
cat ports   |while read line
do#nc -z  -w 10  $line

nc -z -w 2 $line 58422>/dev/null2>&1if[ $?-eq 0]then
echo $line:ok
else
echo $line:fail
fi

done

这里的ports 既可以是文件</div>
                                </li>
                                <li><a href="/article/1948.htm"
                                       title="java-2.设计包含min函数的栈" target="_blank">java-2.设计包含min函数的栈</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>具体思路参见:http://zhedahht.blog.163.com/blog/static/25411174200712895228171/ 
 

import java.util.ArrayList;
import java.util.List;


public class MinStack {

	//maybe we can use origin array rathe</div>
                                </li>
                                <li><a href="/article/2075.htm"
                                       title="Netty源码学习-ChannelHandler" target="_blank">Netty源码学习-ChannelHandler</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/netty/1.htm">netty</a>
                                    <div> 
一般来说,“有状态”的ChannelHandler不应该是“共享”的,“无状态”的ChannelHandler则可“共享” 
例如ObjectEncoder是“共享”的, 但 ObjectDecoder 不是 
因为每一次调用decode方法时,可能数据未接收完全(incomplete), 
它与上一次decode时接收到的数据“累计”起来才有可能是完整的数据,是“有状态”的 
 
 

p</div>
                                </li>
                                <li><a href="/article/2202.htm"
                                       title="java生成随机数" target="_blank">java生成随机数</a>
                                    <span class="text-muted">cngolon</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>方法一: 
/** 
* 生成随机数 
* @author cngolon@126.com 
* @return 
*/ 
public synchronized static String getChargeSequenceNum(String pre){ 
StringBuffer sequenceNum = new StringBuffer(); 
Date dateTime = new D</div>
                                </li>
                                <li><a href="/article/2329.htm"
                                       title="POI读写海量数据" target="_blank">POI读写海量数据</a>
                                    <span class="text-muted">ctrain</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%B7%E9%87%8F%E6%95%B0%E6%8D%AE/1.htm">海量数据</a>
                                    <div>import java.io.FileOutputStream; 
import java.io.OutputStream; 
 
import org.apache.poi.xssf.streaming.SXSSFRow; 
import org.apache.poi.xssf.streaming.SXSSFSheet; 
import org.apache.poi.xssf.streaming</div>
                                </li>
                                <li><a href="/article/2456.htm"
                                       title="mysql 日期格式化date_format详细使用" target="_blank">mysql 日期格式化date_format详细使用</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/date_format/1.htm">date_format</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E8%BD%AC%E6%8D%A2/1.htm">日期格式转换</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F%E5%8C%96/1.htm">日期格式化</a>
                                    <div> 
 日期转换函数的详细使用说明 
   DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The&n</div>
                                </li>
                                <li><a href="/article/2583.htm"
                                       title="一个程序员分享8年的开发经验" target="_blank">一个程序员分享8年的开发经验</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a>
                                    <div>  
在中国有很多人都认为IT行为是吃青春饭的,如果过了30岁就很难有机会再发展下去!其实现实并不是这样子的,在下从事.NET及JAVA方面的开发的也有8年的时间了,在这里在下想凭借自己的亲身经历,与大家一起探讨一下。 
明确入行的目的 
很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML, DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容</div>
                                </li>
                                <li><a href="/article/2710.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>很多Android应用一开始都会有一个欢迎界面,淡入淡出效果也是用得非常多的,下面来实现一下。 
主要代码如下: 
package com.myaibang.activity; 
import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.CountDown</div>
                                </li>
                                <li><a href="/article/2837.htm"
                                       title="linux 复习笔记之常见压缩命令" target="_blank">linux 复习笔记之常见压缩命令</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/tar%E8%A7%A3%E5%8E%8B/1.htm">tar解压</a><a class="tag" taget="_blank" href="/search/linux%E7%B3%BB%E7%BB%9F%E5%B8%B8%E8%A7%81%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4/1.htm">linux系统常见压缩命令</a><a class="tag" taget="_blank" href="/search/linux%E5%8E%8B%E7%BC%A9%E5%91%BD%E4%BB%A4/1.htm">linux压缩命令</a><a class="tag" taget="_blank" href="/search/tar%E5%8E%8B%E7%BC%A9/1.htm">tar压缩</a>
                                    <div>转载请出自出处:http://eksliang.iteye.com/blog/2109693 
linux中常见压缩文件的拓展名 
*.gz   gzip程序压缩的文件
*.bz2  bzip程序压缩的文件
*.tar  tar程序打包的数据,没有经过压缩
*.tar.gz  tar程序打包后,并经过gzip程序压缩
*.tar.bz2 tar程序打包后,并经过bzip程序压缩
*.zi</div>
                                </li>
                                <li><a href="/article/2964.htm"
                                       title="Android 应用程序发送shell命令" target="_blank">Android 应用程序发送shell命令</a>
                                    <span class="text-muted">gqdy365</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>项目中需要直接在APP中通过发送shell指令来控制lcd灯,其实按理说应该是方案公司在调好lcd灯驱动之后直接通过service送接口上来给APP,APP调用就可以控制了,这是正规流程,但我们项目的方案商用的mtk方案,方案公司又没人会改,只调好了驱动,让应用程序自己实现灯的控制,这不蛋疼嘛!!!! 
 
发就发吧! 
 
一、关于shell指令: 
我们知道,shell指令是Linux里面带的</div>
                                </li>
                                <li><a href="/article/3091.htm"
                                       title="java 无损读取文本文件" target="_blank">java 无损读取文本文件</a>
                                    <span class="text-muted">hw1287789687</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%96%87%E4%BB%B6/1.htm">读取文件</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E6%8D%9F%E8%AF%BB%E5%8F%96/1.htm">无损读取</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E5%8F%96%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6/1.htm">读取文本文件</a><a class="tag" taget="_blank" href="/search/charset/1.htm">charset</a>
                                    <div>java 如何无损读取文本文件呢? 
以下是有损的 
@Deprecated
	public static String getFullContent(File file, String charset) {
		BufferedReader reader = null;
		if (!file.exists()) {
			System.out.println("getFull</div>
                                </li>
                                <li><a href="/article/3218.htm"
                                       title="Firebase 相关文章索引" target="_blank">Firebase 相关文章索引</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/firebase/1.htm">firebase</a>
                                    <div>Awesome Firebase 
最近谷歌收购Firebase的新闻又将Firebase拉入了人们的视野,于是我做了这个 github 项目。 
Firebase 是一个数据同步的云服务,不同于 Dropbox 的「文件」,Firebase 同步的是「数据」,服务对象是网站开发者,帮助他们开发具有「实时」(Real-Time)特性的应用。 
开发者只需引用一个 API 库文件就可以使用标准 RE</div>
                                </li>
                                <li><a href="/article/3345.htm"
                                       title="C++学习重点" target="_blank">C++学习重点</a>
                                    <span class="text-muted">lx.asymmetric</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                                    <div>1.c++面向对象的三个特性:封装性,继承性以及多态性。 
  
2.标识符的命名规则:由字母和下划线开头,同时由字母、数字或下划线组成;不能与系统关键字重名。 
  
3.c++语言常量包括整型常量、浮点型常量、布尔常量、字符型常量和字符串性常量。 
  
4.运算符按其功能开以分为六类:算术运算符、位运算符、关系运算符、逻辑运算符、赋值运算符和条件运算符。 
&n</div>
                                </li>
                                <li><a href="/article/3472.htm"
                                       title="java bean和xml相互转换" target="_blank">java bean和xml相互转换</a>
                                    <span class="text-muted">q821424508</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/xml%E5%92%8Cbean%E8%BD%AC%E6%8D%A2/1.htm">xml和bean转换</a><a class="tag" taget="_blank" href="/search/java+bean%E5%92%8Cxml%E8%BD%AC%E6%8D%A2/1.htm">java bean和xml转换</a>
                                    <div>这几天在做微信公众号 
做的过程中想找个java bean转xml的工具,找了几个用着不知道是配置不好还是怎么回事,都会有一些问题, 
然后脑子一热谢了一个javabean和xml的转换的工具里,自己用着还行,虽然有一些约束吧 , 
还是贴出来记录一下  
  
  
顺便你提一下下,这个转换工具支持属性为集合、数组和非基本属性的对象。 
  
packag</div>
                                </li>
                                <li><a href="/article/3599.htm"
                                       title="C 语言初级 位运算" target="_blank">C 语言初级 位运算</a>
                                    <span class="text-muted">1140566087</span>
<a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>  第十章 位运算    1、位运算对象只能是整形或字符型数据,在VC6.0中int型数据占4个字节    2、位运算符:  运算符 作用  ~ 按位求反  << 左移  >> 右移  & 按位与  ^ 按位异或  | 按位或   他们的优先级从高到低;    3、位运算符的运算功能:  a、按位取反:  ~01001101 = 101</div>
                                </li>
                                <li><a href="/article/3726.htm"
                                       title="14点睛Spring4.1-脚本编程" target="_blank">14点睛Spring4.1-脚本编程</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a>
                                    <div>14.1 Scripting脚本编程 
 
 脚本语言和java这类静态的语言的主要区别是:脚本语言无需编译,源码直接可运行; 
 如果我们经常需要修改的某些代码,每一次我们至少要进行编译,打包,重新部署的操作,步骤相当麻烦; 
 如果我们的应用不允许重启,这在现实的情况中也是很常见的; 
 在spring中使用脚本编程给上述的应用场景提供了解决方案,即动态加载bean; 
 spring支持脚本</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>