第一个简单但完整的爬虫实例

从今天开始学爬虫,现在就来分享一个简单完整(具有启发意义)的实例吧。文章结构如下:

  1. 爬虫问题描述
  2. requests库的使用
  3. beautifulsoup4库的使用
  4. 爬取软科中国大学排名

1 爬虫问题概述

   爬虫即(常用Python)从各个网站/页提取用户感兴趣的各类数据,并做进一步的信息挖掘的程序。爬虫程序实现的步骤主要为:①通过网络链接获取网页内容;②对获取的网页内容进行处理,这俩步骤分别使用requests与beautifulsoup4类库。网络爬虫实则包括:“网络爬虫”与“信息提交”。此外,网站的 “Robots排除协议”可以拒绝爬虫访问。

2 requests库的使用

  requests是一个简洁且简单的处理HTTP请求的第三方库。
import requests
def getHtmlText(url):
    try:
        res=requests.get(url,timeout=15) #超时15秒(url必为:http/https)
        res.raise_for_status() #如果返回状态不是200,引发异常
        res.encoding="utf-8" #使之正常显示中文
        return res.text #返回网页内容的字符串形式(res.content()二进制形式)
    except: '''①ConnectionError异常:DNS查询失败、拒接连接;②HTTPError异常:无效的http响应;③Timeout异常:请求超时;④TooManyRedirects异常:请求超过了设定的最大重定向次数'''
        return ""

3 beautifulsoup4库的使用

  beautifulsoup4是一个解析、处理HTML、XML的第三方库。获取HTML页面内容后,需进一步解析页面格式,提取有用信息。bs4最大的优势是:能根据HTML和XML语法建立解析树,进而高效地解析其中的内容。
  bs4采用面向对象思想实现:每一个实例便是一个页面;HTML页面标签(Tag)成为bs4对象的属性(“.”访问);每个Tag也是一个对象(“.”访问)。 层次为:【页面(soup)→Tag标签(head、title、a等)→标签属性(name、attrs、string、contents)→标签属性查找find_all()】
url="http://www.baidu.com"
soup=BeautifulSoup(getHtmlText(url)) #soup对象
print(soup.head) #
print(soup.title) #; type(soup.title):<class 'bs4.element.Tag'>
print(soup.p,soup.body,soup.strings,soup.stripped_strings)#<p>...【远不止这些】

soup_a=soup.a  #Tag对象
print("name:",soup_a.name) #Tag名(str)
print("attrs:",soup_a.attrs) #此Tag的所有属性(dict)
print("string:",soup_a.string) #Tag所夹文本→一般中文(str)【嵌一层,返里层;嵌多层,返None】
print("contents:",soup_a.contents) #此Tag下所有子Tag内容(list)

</code></pre> 
  <p>  同一页面可有多个同名标签,而单独“soup.Tag”仅能操控第一个标签,故需用find()或find_all()方法:<code>soup.find_all(name,attrs,recursive,string,limit)</code>→返回列表。①name:标签名、②attrs:Tag属性值(dict)、③recursive:查找层次(仅查找当前Tag下一层False)、④string:关键字检索string属性内容,采用string=开始、⑤limit:返回结果个数(默认全部)。备注:<code>soup.find(name,attrs,recursive,string)</code>→返回字符串(匹配的第一个!)。</p> 
  <pre><code>tag_a=soup.find_all("a") #所有的构成列表
print(soup.find_all('a',{'href':'http://v.baidu.com'})) #查找特定一个
print(len(soup.find_all('a',{'href':re.compile('baidu.com')}))) #正则表达式“模糊匹配”
print(soup.find_all(string=re.compile('百度'))) #['百度一下,你就知道', '关于百度', '使用百度前必读']

</code></pre> 
  <h4><font color="red" face="黑体">4 爬取软科中国大学排名</font></h4>   采用requests爬取网页内容,继而使用beautifulsoup4分析、提取网页中的数据,再储存至二维列表中,最后以用户偏好形式打印出。 
  <pre><code>import requests
from bs4 import BeautifulSoup #但并不是BeautifulSoup库

'''(1)抓取网页内容'''
def getHtmlText(url):
    try:
        res=requests.get(url,timeout=15) #超时15秒(url必为:http/https)
        res.raise_for_status() #如果返回状态不是200,则引发异常
        res.encoding="utf-8" #使之正常显示中文
        return res.text #返回网页内容的字符串形式(res.content()二进制形式)
    except:
        '''①ConnectionError异常:DNS查询失败、拒接连接;②HTTPError异常:无效的http响应;
        ③Timeout异常:请求超时;④TooManyRedirects异常:请求超过了设定的最大重定向次数'''
        return ""
    
'''(2)提取网页内容信息'''
'''请右键查看网页源码,以决定如何分割字符'''
def get_allData(soup):
    allSchoolData=list()
    trData=soup.find_all('tr') #页面所有的<tr></tr>
    for tr in trData:
        tdData=tr.find_all('td')
        if len(tdData)==0:  #去除非目的<tr>
            continue
        oneSchoolData=[] #一个<tr>有多个<td>
        for td in tdData:
            oneSchoolData.append(td.string) #某个<td>的string
        allSchoolData.append(oneSchoolData)
    return allSchoolData

'''(3)打印结果'''
def printResult(data):
    print("{:^4}{:^10}{:^5}{:^8}{:^10}".format("排名","学校名称","省市","总分","科研规模"))
    for i in range(len(data)):
        oneschool=data[i]
        '''打印什么数据:你得查看具体的网页'''
        print("{:^4}{:^10}{:^5}{:^8}{:^10}".format(oneschool[0],oneschool[1],oneschool[2],\
              oneschool[3],oneschool[6]))

'''主程序'''
if __name__=='main':
    url="http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html"
    soup=BeautifulSoup(getHtmlText(url)) #页面解析对象
    printResult(get_allData(soup)) #输出结果
</code></pre> 
  <p>  结果如下:<br> <a href="http://img.e-com-net.com/image/info8/69582a4505c741d6a1a40843fa51dfde.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/69582a4505c741d6a1a40843fa51dfde.png" alt="第一个简单但完整的爬虫实例_第1张图片" width="353" height="570" style="border:1px solid black;"></a></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1175136550107820032"></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/1943486727599484928.htm"
                           title="Python 网络爬虫中 robots 协议使用的常见问题及解决方法" target="_blank">Python 网络爬虫中 robots 协议使用的常见问题及解决方法</a>
                        <span class="text-muted"></span>

                        <div>在Python网络爬虫开发中,robots协议的正确应用是保证爬虫合规性的关键。然而,在实际使用过程中,开发者常会遇到各种问题,若处理不当,可能导致爬虫被封禁或引发法律风险。本文将梳理robots协议使用中的常见问题,并提供针对性的解决方法。一、协议解析不准确导致的合规性问题1.1误读User-agent通配符范围问题表现:将User-agent:*错误理解为适用于所有场景,忽略了特定爬虫的单独规</div>
                    </li>
                    <li><a href="/article/1943162636753498112.htm"
                           title="Python 网络爬虫的基本流程及 robots 协议详解" target="_blank">Python 网络爬虫的基本流程及 robots 协议详解</a>
                        <span class="text-muted">女码农的重启</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>数据驱动的时代,网络爬虫作为高效获取互联网信息的工具,其规范化开发离不开对基本流程的掌握和对robots协议的遵守。本文将系统梳理Python网络爬虫的核心流程,并深入解读robots协议的重要性及实践规范。一、Python网络爬虫的基本流程Python网络爬虫的工作过程可分为四个核心阶段,每个阶段环环相扣,共同构成数据采集的完整链路。1.1发起网络请求这是爬虫与目标服务器交互的第一步,通过发送H</div>
                    </li>
                    <li><a href="/article/1942842584028213248.htm"
                           title="156个Python网络爬虫资源,妈妈再也不用担心你找不到资源!_爬虫 csdn资源" target="_blank">156个Python网络爬虫资源,妈妈再也不用担心你找不到资源!_爬虫 csdn资源</a>
                        <span class="text-muted"></span>

                        <div>本列表包含Python网页抓取和数据处理相关的库。网络相关通用urllib-网络库(标准库)requests-网络库grab-网络库(基于pycurl)pycurl-网络库(与libcurl绑定)urllib3-具有线程安全连接池、文件psot支持、高可用的PythonHTTP库httplib2-网络库RoboBrowser-一个无需独立浏览器即可访问网页的简单、pythonic的库Mechani</div>
                    </li>
                    <li><a href="/article/1942267064966246400.htm"
                           title="python笔记-Selenium谷歌浏览器驱动下载" target="_blank">python笔记-Selenium谷歌浏览器驱动下载</a>
                        <span class="text-muted">hero.zhong</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a>
                        <div>Selenium谷歌浏览器驱动下载地址:https://googlechromelabs.github.io/chrome-for-testing/#stable下面是遇到的问题:python网络爬虫技术中使用谷歌浏览器代码,报错:OSError:[WinError193]%1不是有效的Win32应用程序:遇到错误OSError:[WinError193]%1不是有效的Win32应用程序通常意味着</div>
                    </li>
                    <li><a href="/article/1941100983048269824.htm"
                           title="Python网络爬虫与数据处理工具大全:从入门到精通" target="_blank">Python网络爬虫与数据处理工具大全:从入门到精通</a>
                        <span class="text-muted">俞凯润</span>

                        <div>Python网络爬虫与数据处理工具大全:从入门到精通awesome-web-scrapingListoflibraries,toolsandAPIsforwebscrapinganddataprocessing.项目地址:https://gitcode.com/gh_mirrors/aw/awesome-web-scraping本文基于知名Python网络爬虫资源库lorien/awesome-w</div>
                    </li>
                    <li><a href="/article/1939735842570432512.htm"
                           title="Python网络爬虫---urllib库介绍" target="_blank">Python网络爬虫---urllib库介绍</a>
                        <span class="text-muted">db_hsk_2099</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1·urllib库简介·用途:urllib库是python的标准库之一,是python内置的HTTP请求库,用于发送HTTP/FTP请求,它可以看作处理URL的组件集合。·特点:简单易用,支持HTTP、HTTPS、FTP等协议。2.urllib库包含4大模块:目录:(1)urllib.request(2)urllib.parse(3)urllib.error(4)urllib.robotparse</div>
                    </li>
                    <li><a href="/article/1939540294877900800.htm"
                           title="python网络安全实战_基于Python网络爬虫实战" target="_blank">python网络安全实战_基于Python网络爬虫实战</a>
                        <span class="text-muted">weixin_39907850</span>
<a class="tag" taget="_blank" href="/search/python%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E5%AE%9E%E6%88%98/1.htm">python网络安全实战</a>
                        <div>文件的操作:一般都要使用os模块和os.path模块importos.pathos.path.exists('D:\\Python\\1.txt')#判断文件是否存在abspath(path)#返回path所在的绝对路径dirname(p)#返回目录的路径exists(path)#判断文件是否存在getatime(filename)#返回文件的最后访问时间getctime(filename)#返回</div>
                    </li>
                    <li><a href="/article/1937000092670160896.htm"
                           title="Python网络爬虫案例实战:动态网页爬取:selenium爬取动态网页" target="_blank">Python网络爬虫案例实战:动态网页爬取:selenium爬取动态网页</a>
                        <span class="text-muted">andyyah晓波</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E6%A1%88%E4%BE%8B%E5%AE%9E%E6%88%98/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/selenium/1.htm">selenium</a>
                        <div>Python网络爬虫案例实战:动态网页爬取:selenium爬取动态网页利用“审查元素”功能找到源地址十分容易,但是有些网站非常复杂。除此之外,有一些数据真实地址的URL也十分冗长和复杂,有些网站为了规避这些爬取会对地址进行加密。因此,在此介绍另一种方法,即使用浏览器渲染引擎,直接用浏览器在显示网页时解析HTML,应用CSS样式并执行JavaScript的语句。此方法在爬虫过程中会打开一个浏览器,</div>
                    </li>
                    <li><a href="/article/1936829392852414464.htm"
                           title="Python网络爬虫:Scrapy框架的全面解析" target="_blank">Python网络爬虫:Scrapy框架的全面解析</a>
                        <span class="text-muted">4.0啊</span>
<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%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a><a class="tag" taget="_blank" href="/search/ipython/1.htm">ipython</a>
                        <div>Python网络爬虫:Scrapy框架的全面解析一、引言在当今互联网的时代,数据是最重要的资源之一。为了获取这些数据,我们经常需要编写网络爬虫来从各种网站上抓取信息。Python作为一种强大的编程语言,拥有许多用于网络爬虫的工具和库。其中,Scrapy是一个功能强大且灵活的开源网络爬虫框架,它提供了一种高效的方式来爬取网站并提取所需的数据。本文将深入探讨Scrapy框架的核心概念、使用方法以及高级</div>
                    </li>
                    <li><a href="/article/1932656084112175104.htm"
                           title="python多线程爬虫和异步爬虫_Python网络爬虫(高性能异步爬虫)" target="_blank">python多线程爬虫和异步爬虫_Python网络爬虫(高性能异步爬虫)</a>
                        <span class="text-muted">weixin_39542608</span>

                        <div>一、背景其实爬虫的本质就是client发请求批量获取server的响应数据,如果我们有多个url待爬取,只用一个线程且采用串行的方式执行,那只能等待爬取一个结束后才能继续下一个,效率会非常低。需要强调的是:对于单线程下串行N个任务,并不完全等同于低效,如果这N个任务都是纯计算的任务,那么该线程对cpu的利用率仍然会很高,之所以单线程下串行多个爬虫任务低效,是因为爬虫任务是明显的IO密集型(阻塞)程</div>
                    </li>
                    <li><a href="/article/1932309093138100224.htm"
                           title="Python网络爬虫基础知识day1" target="_blank">Python网络爬虫基础知识day1</a>
                        <span class="text-muted">会飞的猪 1</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/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><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86/1.htm">知识</a>
                        <div>什么是网络爬虫:通俗理解:爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并数据抓取下来,然后使用一定的规则提取有价值的数据。通用爬虫和聚焦爬虫:通用爬虫:通用爬虫是搜索引擎抓取系统(百度、谷歌、搜狗等)的重要组成部分。主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。聚焦爬虫:是面向特定需求的一种网络爬虫程序,他与通用爬虫的区别在于:聚焦爬虫在实施网页抓取的时候会对内容进行</div>
                    </li>
                    <li><a href="/article/1932176847693475840.htm"
                           title="python网络爬虫网页前端编程基础、Socket库、使用Socket进行TCP编程、认识HTTP协议、熟悉Cookie等。_python的socket库" target="_blank">python网络爬虫网页前端编程基础、Socket库、使用Socket进行TCP编程、认识HTTP协议、熟悉Cookie等。_python的socket库</a>
                        <span class="text-muted">软件开发Java</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</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%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>最后Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习Python门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的Pytho</div>
                    </li>
                    <li><a href="/article/1930861927718776832.htm"
                           title="Python网络爬虫入门最佳实践:学会使用Python爬取网页数据的常用技巧" target="_blank">Python网络爬虫入门最佳实践:学会使用Python爬取网页数据的常用技巧</a>
                        <span class="text-muted">CyMylive.</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、前言在互联网上,有海量的数据可以被利用。而前往获取这些数据的方法之一就是网络爬虫。网络爬虫是一个自动化的程序,可以浏览互联网上的页面并提取希望的数据。Python是一个流行的编程语言,也是一个非常适合开发网络爬虫的语言。Python有几个强大的库和工具,可以帮助开发人员轻松地编写高效的网络爬虫。本文将介绍Python网络爬虫的入门最佳实践,从基础到高级不同层次地帮助用户掌握Python网络爬虫</div>
                    </li>
                    <li><a href="/article/1929195384492584960.htm"
                           title="python爬虫scrapy入门看这篇就够了_Python网络爬虫4 - scrapy入门" target="_blank">python爬虫scrapy入门看这篇就够了_Python网络爬虫4 - scrapy入门</a>
                        <span class="text-muted">weixin_39977136</span>

                        <div>scrapy作为一款强大的爬虫框架,当然要好好学习一番,本文便是本人学习和使用scrapy过后的一个总结,内容比较基础,算是入门笔记吧,主要讲述scrapy的基本概念和使用方法。scrapyframework首先附上scrapy经典图如下:scrapy框架包含以下几个部分ScrapyEngine引擎Spiders爬虫Scheduler调度器Downloader下载器ItemPipeline项目管道</div>
                    </li>
                    <li><a href="/article/1928902248885186560.htm"
                           title="Python网络爬虫技术解析:从基础实现到反爬应对" target="_blank">Python网络爬虫技术解析:从基础实现到反爬应对</a>
                        <span class="text-muted">小张在编程</span>
<a class="tag" taget="_blank" href="/search/Python%E5%AD%A6%E4%B9%A0/1.htm">Python学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%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>网络爬虫(WebCrawler)是一种通过自动化程序模拟人类浏览器行为,从互联网页面中提取结构化数据的技术。其核心逻辑围绕“请求-解析-存储”流程展开,广泛应用于行业数据监测、竞品分析、学术研究等场景。本文将系统解析爬虫核心技术,并结合工程实践探讨反爬应对策略。一、爬虫核心技术基础1.1HTTP协议与请求-响应模型网络爬虫的本质是模拟客户端与服务器的HTTP交互。客户端通过发送HTTP请求(GET</div>
                    </li>
                    <li><a href="/article/1926189146972418048.htm"
                           title="python网络爬虫的基本使用" target="_blank">python网络爬虫的基本使用</a>
                        <span class="text-muted">逾非时</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>各位帅哥美女点点关注,有关注才有动力啊网络爬虫引言我们平时都说Python爬虫,其实这里可能有个误解,爬虫并不是Python独有的,可以做爬虫的语言有很多例如:PHP、JAVA、C#、C++、Python。为什么Python的爬虫技术会异军突起呢?Python火并不是因为爬虫技术,而是AI人工智能、数据分析(GoogleAlphaGo)等等功能;这些Java其实也能做,而选择Python做爬虫是因</div>
                    </li>
                    <li><a href="/article/1919655108157698048.htm"
                           title="30个小时搞定Python网络爬虫" target="_blank">30个小时搞定Python网络爬虫</a>
                        <span class="text-muted">企鹅侠客</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%AE%9E%E7%94%A8%E8%B5%84%E6%BA%90/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%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>本文分享一套结构完整、内容深入的Python网络爬虫学习资料,适合从入门到进阶系统学习。总共10个章节,包含基础语法、核心爬虫技术、反爬破解、Scrapy框架、分布式爬虫实战等内容,覆盖大部分真实爬虫开发需求。学习资料结构概览第一章:Python网络爬虫之基础包含Python入门知识、语法、控制流、文件操作、异常处理与OOP基础。第二章:工作原理详解深入讲解爬虫的基本概念、抓取流程与网页结构。第三</div>
                    </li>
                    <li><a href="/article/1918228106146017280.htm"
                           title="Python爬虫学习资源" target="_blank">Python爬虫学习资源</a>
                        <span class="text-muted">python游乐园</span>
<a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E5%A4%84%E7%90%86/1.htm">文本处理</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%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>书籍《Python网络爬虫从入门到实践》内容由浅入深,详细介绍了Python爬虫的基础知识和实践技巧,包括网页解析、数据存储、反爬虫策略等。书中配有大量的示例代码和案例分析,适合初学者快速上手。《Python网络数据采集》这本书涵盖了网页抓取的各个方面,包括如何处理HTML和XML、使用正则表达式、处理表单和登录验证等。书中还介绍了如何使用Scrapy框架进行大规模数据采集,以及如何处理反爬虫机制</div>
                    </li>
                    <li><a href="/article/1914722824715563008.htm"
                           title="网络爬虫-Python网络爬虫和C#网络爬虫" target="_blank">网络爬虫-Python网络爬虫和C#网络爬虫</a>
                        <span class="text-muted">笑非不退</span>
<a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</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/python/1.htm">python</a>
                        <div>爬虫是一种从互联网抓取数据信息的自动化程序,通过HTTP协议向网站发送请求,获取网页内容,并通过分析网页内容来抓取和存储网页数据。爬虫可以在抓取过程中进行各种异常处理、错误重试等操作,确保爬取持续高效地运行1、Python网络爬虫Python网络爬虫详细介绍Python网络爬虫是自动化程序,用来抓取网页上的数据。通过网络爬虫,你可以从互联网上采集、处理数据,比如抓取产品信息、新闻内容等。Pytho</div>
                    </li>
                    <li><a href="/article/1914524662306500608.htm"
                           title="2024年最新从入门到实战:Python网络爬虫指南" target="_blank">2024年最新从入门到实战:Python网络爬虫指南</a>
                        <span class="text-muted">2401_84689601</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</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来构建和运行简单的网络爬虫,以及如何将其应用于实际项目中。什么是网络爬虫?网络爬虫(WebCrawler)是一种自动获取互联网信息的程序,它通过访问网页、提取数据并保存数据的方式来实现信息</div>
                    </li>
                    <li><a href="/article/1914445750981423104.htm"
                           title="Python网络爬虫与数据采集实战——网络爬虫的基本流程" target="_blank">Python网络爬虫与数据采集实战——网络爬虫的基本流程</a>
                        <span class="text-muted">m0_74823658</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/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>网络爬虫(WebScraper)是用于自动化地从互联网上抓取信息的程序。它广泛应用于搜索引擎、数据采集、市场分析等领域。本文将详细探讨网络爬虫的基本流程,包括URL提取、HTTP请求与响应、数据解析与存储,以及一个实际的爬虫示例。文章不仅关注基础概念,更会深入到实际开发中遇到的技术难点和最新的技术解决方案。1.URL提取URL提取是网络爬虫中最基础的步骤之一,爬虫首先需要从目标网站中提取出需要抓取</div>
                    </li>
                    <li><a href="/article/1913867144232235008.htm"
                           title="【愚公系列】《Python网络爬虫从入门到精通》056-Scrapy_Redis分布式爬虫(Scrapy-Redis 模块)" target="_blank">【愚公系列】《Python网络爬虫从入门到精通》056-Scrapy_Redis分布式爬虫(Scrapy-Redis 模块)</a>
                        <span class="text-muted">愚公搬代码</span>
<a class="tag" taget="_blank" href="/search/%E6%84%9A%E5%85%AC%E7%B3%BB%E5%88%97-%E4%B9%A6%E7%B1%8D%E4%B8%93%E6%A0%8F/1.htm">愚公系列-书籍专栏</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/scrapy/1.htm">scrapy</a>
                        <div>【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主!江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"挖山不止"的毅力为开发者们搬开知识道路上的重重阻碍!【行业认证·权威头衔】✔华为云天团核心成员:特约编辑/云享专家/开发者专家/产品云测专家✔开发者社区全满贯:CSDN博客&商业化双料</div>
                    </li>
                    <li><a href="/article/1913258897569804288.htm"
                           title="python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》..." target="_blank">python网络爬虫课程设计题目_山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》...</a>
                        <span class="text-muted">weixin_32243075</span>

                        <div>山东建筑大学计算机网络课程设计《基于Python的网络爬虫设计》山东建筑大学课程设计成果报告题目:基于Python的网络爬虫设计课程:计算机网络A院(部):管理工程学院专业:信息管理与信息系统班级:学生姓名:学号:指导教师:完成日期:目录1设计目的12设计任务内容13网络爬虫程序总体设计14网络爬虫程序详细设计14.1设计环境和目标分析14.1.1设计环境14.1.2目标分析24.2爬虫运行流程分</div>
                    </li>
                    <li><a href="/article/1913079381794811904.htm"
                           title="Python中高效的爬虫框架,你用过几个?" target="_blank">Python中高效的爬虫框架,你用过几个?</a>
                        <span class="text-muted">IT猫仔</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在信息时代,数据是无价之宝。许多开发者和数据分析师需要从互联网上采集大量的数据,用于各种用途,如分析、建模、可视化等。Python作为一门强大的编程语言,提供了多种高效的爬虫框架,使数据采集变得更加容易和高效。本文将介绍一些Python中高效的爬虫框架,帮助你选择适合你项目需求的工具。一、Scrapy1.Scrapy框架简介Scrapy是一个功能强大的Python网络爬虫框架,专为数据采集而设计。</div>
                    </li>
                    <li><a href="/article/1912237574399782912.htm"
                           title="python网络爬虫练习_《零基础:21天搞定Python分布爬虫》练习-古诗文网" target="_blank">python网络爬虫练习_《零基础:21天搞定Python分布爬虫》练习-古诗文网</a>
                        <span class="text-muted">weixin_39953244</span>
<a class="tag" taget="_blank" href="/search/python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E7%BB%83%E4%B9%A0/1.htm">python网络爬虫练习</a>
                        <div>importrequestsimportredefmain():url='https://www.gushiwen.org/default_1.aspx'headers={"user-agent":"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36</div>
                    </li>
                    <li><a href="/article/1911669174753619968.htm"
                           title="Python网络爬虫深度教程" target="_blank">Python网络爬虫深度教程</a>
                        <span class="text-muted">jijihusong006</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/scipy/1.htm">scipy</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a>
                        <div>以下是一份详细的Python网络爬虫开发教程,包含原理讲解、技术实现和最佳实践,分为多个章节进行系统化讲解:Python网络爬虫深度教程1、Python爬虫+JS逆向,进阶课程,破解难题https://pan.quark.cn/s/9ad78f3f71162、Python+大数据开发V5,黑马班助你就业无忧https://pan.quark.cn/s/79942bacd34a3、传送资料库查询ht</div>
                    </li>
                    <li><a href="/article/1910805542700380160.htm"
                           title="python网络爬虫" target="_blank">python网络爬虫</a>
                        <span class="text-muted">Small Cow</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</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爬虫核心库HTTP请求库requests:简单易用的HTTP请求库,处理GET/POST请求。aiohttp:异步HTTP客户端,适合高并发场景。HTML/XML解析库BeautifulSoup:基于DOM树的解析库,支持多种解析器(如lxml)。lxml:高性能解析库,支持XPath语法。动态页面处理Selenium:模拟浏览器操作,处理JavaScript渲染的页面。Playw</div>
                    </li>
                    <li><a href="/article/1910156111835623424.htm"
                           title="【机器学习+爬虫】房屋数据分析预测与可视化系统 计算机毕业设计 爬虫 大数据毕业设计 人工智能 预测模型 数据分析 数据可视化" target="_blank">【机器学习+爬虫】房屋数据分析预测与可视化系统 计算机毕业设计 爬虫 大数据毕业设计 人工智能 预测模型 数据分析 数据可视化</a>
                        <span class="text-muted">weixin_45469617</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%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/scikit-learn/1.htm">scikit-learn</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%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</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/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a>
                        <div>演示视频:【机器学习】房屋数据分析预测与可视化系统计算机毕业设计爬虫大数据毕业设计人工智能预测模型数据分析数据可视化技术栈:python、flask、mysql、scikit-learn创新点:Python网络爬虫、机器学习、预测算法、多元线性回归,数据分析与可视化</div>
                    </li>
                    <li><a href="/article/1907824423335948288.htm"
                           title="python网络爬虫-进阶篇·正则表达式" target="_blank">python网络爬虫-进阶篇·正则表达式</a>
                        <span class="text-muted">Tttian622</span>
<a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB/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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>正则表达式是一种用于匹配字符串的模式1.匹配字符串的模式在爬虫项目中,想要获取特定的信息,需要精确定位其地址。这个过程需要进行复杂的文本匹配操作。以下是一些常用字符的用法:.:匹配任意单个字符(换行符除外)。*:匹配前面的元素零次或多次。+:匹配前面的元素一次或多次。?:匹配前面的元素零次或一次。^:匹配输入字符串的开始位置。$:匹配输入字符串的结束位置。[]:匹配方括号内的任意字符。|:逻辑或操</div>
                    </li>
                    <li><a href="/article/1907824423935733760.htm"
                           title="python网络爬虫-二度进阶篇·Xpath与lxml" target="_blank">python网络爬虫-二度进阶篇·Xpath与lxml</a>
                        <span class="text-muted">Tttian622</span>
<a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB/1.htm">python爬虫</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>1.XPath语法1.选取节点路径表达式描述/div/a从根节点开始选取div节点下的a节点/div/a[2]/img从根节点开始选取div节点下的第二给a节点下的img节点//div[@class='header-wrapper'选取所有属性class的值为header-warpper的div节点//*选取文档中所有元素//@*选取文档中所有带属性的元素2.谓语查找特定的节点或者包含某个指定值的</div>
                    </li>
                                <li><a href="/article/26.htm"
                                       title="设计模式介绍" target="_blank">设计模式介绍</a>
                                    <span class="text-muted">tntxia</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>设计模式来源于土木工程师 克里斯托弗 亚历山大(http://en.wikipedia.org/wiki/Christopher_Alexander)的早期作品。他经常发表一些作品,内容是总结他在解决设计问题方面的经验,以及这些知识与城市和建筑模式之间有何关联。有一天,亚历山大突然发现,重复使用这些模式可以让某些设计构造取得我们期望的最佳效果。 
 
亚历山大与萨拉-石川佳纯和穆雷 西乐弗斯坦合作</div>
                                </li>
                                <li><a href="/article/153.htm"
                                       title="android高级组件使用(一)" target="_blank">android高级组件使用(一)</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/RatingBar/1.htm">RatingBar</a><a class="tag" taget="_blank" href="/search/Spinner/1.htm">Spinner</a>
                                    <div>1、自动完成文本框(AutoCompleteTextView) 
 
 AutoCompleteTextView从EditText派生出来,实际上也是一个文本编辑框,但它比普通编辑框多一个功能:当用户输入一个字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。 
 使用AutoCompleteTex</div>
                                </li>
                                <li><a href="/article/280.htm"
                                       title="[网络与通讯]路由器市场大有潜力可挖掘" target="_blank">[网络与通讯]路由器市场大有潜力可挖掘</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                                    <div>   
       如果国内的电子厂商和计算机设备厂商觉得手机市场已经有点饱和了,那么可以考虑一下交换机和路由器市场的进入问题..... 
 
       这方面的技术和知识,目前处在一个开放型的状态,有利于各类小型电子企业进入 
 
 &nbs</div>
                                </li>
                                <li><a href="/article/407.htm"
                                       title="自写简单Redis内存统计shell" target="_blank">自写简单Redis内存统计shell</a>
                                    <span class="text-muted">商人shang</span>
<a class="tag" taget="_blank" href="/search/Linux+shell/1.htm">Linux shell</a><a class="tag" taget="_blank" href="/search/%E7%BB%9F%E8%AE%A1Redis%E5%86%85%E5%AD%98/1.htm">统计Redis内存</a>
                                    <div>#!/bin/bash
address="192.168.150.128:6666,192.168.150.128:6666"  
hosts=(${address//,/ })  

sfile="staticts.log"

for hostitem in ${hosts[@]}  
do  
    ipport=(${hostitem</div>
                                </li>
                                <li><a href="/article/534.htm"
                                       title="单例模式(饿汉 vs懒汉)" target="_blank">单例模式(饿汉 vs懒汉)</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a>
                                    <div>package 单例模式;
/*
 * 应用场景:保证在整个应用之中某个对象的实例只有一个
 * 单例模式种的《 懒汉模式》  
 * */
public class Singleton {
	
	//01 将构造方法私有化,外界就无法用new Singleton()的方式获得实例
	private Singleton(){};
	
	//02 申明类得唯一实例
	priva</div>
                                </li>
                                <li><a href="/article/661.htm"
                                       title="springMvc json支持" target="_blank">springMvc json支持</a>
                                    <span class="text-muted">杨白白</span>
<a class="tag" taget="_blank" href="/search/json+springmvc/1.htm">json springmvc</a>
                                    <div>1.Spring mvc处理json需要使用jackson的类库,因此需要先引入jackson包 
 
 
2在spring mvc中解析输入为json格式的数据:使用@RequestBody来设置输入 
 

@RequestMapping("helloJson")
public @ResponseBody
    JsonTest helloJson() {
   </div>
                                </li>
                                <li><a href="/article/788.htm"
                                       title="android播放,掃描添加本地音頻文件" target="_blank">android播放,掃描添加本地音頻文件</a>
                                    <span class="text-muted">小桔子</span>

                                    <div>        最近幾乎沒有什麽事情,繼續鼓搗我的小東西。想在項目中加入一個簡易的音樂播放器功能,就像華為p6桌面上那麼大小的音樂播放器。用過天天動聽或者QQ音樂播放器的人都知道,可已通過本地掃描添加歌曲。不知道他們是怎麼實現的,我覺得應該掃描設備上的所有文件,過濾出音頻文件,每個文件實例化為一個實體,記錄文件名、路徑、歌手、類型、大小等信息。具體算法思想,</div>
                                </li>
                                <li><a href="/article/915.htm"
                                       title="oracle常用命令" target="_blank">oracle常用命令</a>
                                    <span class="text-muted">aichenglong</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/dba/1.htm">dba</a><a class="tag" taget="_blank" href="/search/%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4/1.htm">常用命令</a>
                                    <div>1 创建临时表空间 
create temporary tablespace user_temp  
tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' 
size 50m  
autoextend on  
next 50m maxsize 20480m  
extent management local</div>
                                </li>
                                <li><a href="/article/1042.htm"
                                       title="25个Eclipse插件" target="_blank">25个Eclipse插件</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/eclipse%E6%8F%92%E4%BB%B6/1.htm">eclipse插件</a>
                                    <div>提高代码质量的插件1. FindBugsFindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。2. CheckstyleCheckstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。3. ECLemmaECLemma是一款拥有Eclipse Public License许可的免费工具,它提供了</div>
                                </li>
                                <li><a href="/article/1169.htm"
                                       title="Spring MVC拦截器+注解方式实现防止表单重复提交" target="_blank">Spring MVC拦截器+注解方式实现防止表单重复提交</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a>
                                    <div>原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过。      
1.新建注解: 
     
?       1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   </div>
                                </li>
                                <li><a href="/article/1296.htm"
                                       title="《Javascript高级程序设计(第3版)》闭包理解" target="_blank">《Javascript高级程序设计(第3版)》闭包理解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>“闭包是指有权访问另一个函数作用域中的变量的函数。”--《Javascript高级程序设计(第3版)》 
  
      看以下代码: 
<script type="text/javascript">
    function outer() {
        var i = 10;
        return f</div>
                                </li>
                                <li><a href="/article/1423.htm"
                                       title="AngularJS Module类的方法" target="_blank">AngularJS Module类的方法</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/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Module/1.htm">Module</a>
                                    <div>        AngularJS中的Module类负责定义应用如何启动,它还可以通过声明的方式定义应用中的各个片段。我们来看看它是如何实现这些功能的。 
一.Main方法在哪里 
        如果你是从Java或者Python编程语言转过来的,那么你可能很想知道AngularJS里面的main方法在哪里?这个把所</div>
                                </li>
                                <li><a href="/article/1550.htm"
                                       title="[Maven学习笔记七]Maven插件和目标" target="_blank">[Maven学习笔记七]Maven插件和目标</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/maven%E6%8F%92%E4%BB%B6/1.htm">maven插件</a>
                                    <div>插件(plugin)和目标(goal) 
Maven,就其本质而言,是一个插件执行框架,Maven的每个目标的执行逻辑都是由插件来完成的,一个插件可以有1个或者几个目标,比如maven-compiler-plugin插件包含compile和testCompile,即maven-compiler-plugin提供了源代码编译和测试源代码编译的两个目标 
  
使用插件和目标使得我们可以干预</div>
                                </li>
                                <li><a href="/article/1677.htm"
                                       title="【Hadoop八】Yarn的资源调度策略" target="_blank">【Hadoop八】Yarn的资源调度策略</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a>
                                    <div>1. Hadoop的三种调度策略 
Hadoop提供了3中作业调用的策略, 
 
 FIFO Scheduler 
 Fair Scheduler 
 Capacity Scheduler 
 
以上三种调度算法,在Hadoop MR1中就引入了,在Yarn中对它们进行了改进和完善.Fair和Capacity Scheduler用于多用户共享的资源调度 
  2. 多用户资源共享的调度 </div>
                                </li>
                                <li><a href="/article/1804.htm"
                                       title="Nginx使用Linux内存加速静态文件访问" target="_blank">Nginx使用Linux内存加速静态文件访问</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>Nginx是一个非常出色的静态资源web服务器。如果你嫌它还不够快,可以把放在磁盘中的文件,映射到内存中,减少高并发下的磁盘IO。 
先做几个假设。nginx.conf中所配置站点的路径是/home/wwwroot/res,站点所对应文件原始存储路径:/opt/web/res 
shell脚本非常简单,思路就是拷贝资源文件到内存中,然后在把网站的静态文件链接指向到内存中即可。具体如下:      </div>
                                </li>
                                <li><a href="/article/1931.htm"
                                       title="关于Unity3D中的Shader的知识" target="_blank">关于Unity3D中的Shader的知识</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/unity%E8%B5%84%E6%96%99/1.htm">unity资料</a><a class="tag" taget="_blank" href="/search/unity%E6%95%99%E7%A8%8B/1.htm">unity教程</a><a class="tag" taget="_blank" href="/search/unity%E8%A7%86%E9%A2%91/1.htm">unity视频</a><a class="tag" taget="_blank" href="/search/unity%E8%87%AA%E5%AD%A6/1.htm">unity自学</a>
                                    <div>首先先解释下Unity3D的Shader,Unity里面的Shaders是使用一种叫ShaderLab的语言编写的,它同微软的FX文件或者NVIDIA的CgFX有些类似。传统意义上的vertex shader和pixel shader还是使用标准的Cg/HLSL 编程语言编写的。因此Unity文档里面的Shader,都是指用ShaderLab编写的代码,然后我们来看下Unity3D自带的60多个S</div>
                                </li>
                                <li><a href="/article/2058.htm"
                                       title="CopyOnWriteArrayList vs ArrayList" target="_blank">CopyOnWriteArrayList vs ArrayList</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.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 总述:
 * 1.ArrayListi不是线程安全的,CopyO</div>
                                </li>
                                <li><a href="/article/2185.htm"
                                       title="内存中栈和堆的区别" target="_blank">内存中栈和堆的区别</a>
                                    <span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98/1.htm">内存</a>
                                    <div>  
1、内存分配方面: 
 
    堆:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 
 
    栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中</div>
                                </li>
                                <li><a href="/article/2312.htm"
                                       title="回答一位网友对Scala的提问" target="_blank">回答一位网友对Scala的提问</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a><a class="tag" taget="_blank" href="/search/map/1.htm">map</a>
                                    <div>本来准备在私信里直接回复了,但是发现不太方便,就简要回答在这里。  问题 写道   对于scala的简洁十分佩服,但又觉得比较晦涩,例如一例,Map("a" -> List(11,111)).flatMap(_._2),可否说下最后那个函数做了什么,真正在开发的时候也会如此简洁?谢谢  
   先回答一点,在实际使用中,Scala毫无疑问就是这么简单。</div>
                                </li>
                                <li><a href="/article/2439.htm"
                                       title="mysql 取每组前几条记录" target="_blank">mysql 取每组前几条记录</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/%E5%88%86%E7%BB%84/1.htm">分组</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%A4%A7%E5%80%BC/1.htm">最大值</a><a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%B0%8F%E5%80%BC/1.htm">最小值</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E7%BB%84%E4%B8%89%E6%9D%A1%E8%AE%B0%E5%BD%95/1.htm">每组三条记录</a>
                                    <div>一、对分组的记录取前N条记录:例如:取每组的前3条最大的记录    1.用子查询:   SELECT * FROM tableName a  WHERE 3>   (SELECT COUNT(*) FROM  tableName b WHERE b.id=a.id AND b.cnt>a. cnt)   ORDER BY a.id,a.account DE</div>
                                </li>
                                <li><a href="/article/2566.htm"
                                       title="HTTP深入浅出 http请求" target="_blank">HTTP深入浅出 http请求</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/http/1.htm">http</a>
                                    <div>    HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后We</div>
                                </li>
                                <li><a href="/article/2693.htm"
                                       title="判断MySQL记录是否存在方法比较" target="_blank">判断MySQL记录是否存在方法比较</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>把数据写入到数据库的时,常常会碰到先要检测要插入的记录是否存在,然后决定是否要写入。 
  我这里总结了判断记录是否存在的常用方法: 
  sql语句:  select   count ( * )  from  tablename;  
  然后读取count(*)的值判断记录是否存在。对于这种方法性能上有些浪费,我们只是想判断记录记录是否存在,没有必要全部都查出来。</div>
                                </li>
                                <li><a href="/article/2820.htm"
                                       title="对HTML XML的一点认识" target="_blank">对HTML XML的一点认识</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>感谢http://www.w3school.com.cn提供的资料 
HTML 文档中的每个成分都是一个节点。 
节点 
根据 DOM,HTML 文档中的每个成分都是一个节点。 
 
DOM 是这样规定的: 
 
整个文档是一个文档节点 
每个 HTML 标签是一个元素节点 
包含在 HTML 元素中的文本是文本节点 
每一个 HTML 属性是一个属性节点 
注释属于注释节点 
Node 层次 
</div>
                                </li>
                                <li><a href="/article/2947.htm"
                                       title="jquery分页插件" target="_blank">jquery分页插件</a>
                                    <span class="text-muted">genaiwei</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E9%A1%B5/1.htm">分页</a><a class="tag" taget="_blank" href="/search/%E6%8F%92%E4%BB%B6/1.htm">插件</a>
                                    <div>//jquery页码控件// 创建一个闭包    (function($) {      // 插件的定义      $.fn.pageTool = function(options) {          var totalPa</div>
                                </li>
                                <li><a href="/article/3201.htm"
                                       title="Mybatis与Ibatis对照入门于学习" target="_blank">Mybatis与Ibatis对照入门于学习</a>
                                    <span class="text-muted">Josh_Persistence</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%88%AB/1.htm">区别</a><a class="tag" taget="_blank" href="/search/%E8%81%94%E7%B3%BB/1.htm">联系</a>
                                    <div>一、为什么使用IBatis/Mybatis 
        对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择。即使在持久层框架层出不穷的今天,iBatis 凭借着易学易用、</div>
                                </li>
                                <li><a href="/article/3328.htm"
                                       title="C中怎样合理决定使用那种整数类型?" target="_blank">C中怎样合理决定使用那种整数类型?</a>
                                    <span class="text-muted">秋风扫落叶</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/1.htm">数据类型</a>
                                    <div>如果需要大数值(大于32767或小于32767), 使用long 型。 否则, 如果空间很重要 (如有大数组或很多结构), 使用 short 型。 除此之外, 就使用 int 型。 如果严格定义的溢出特征很重要而负值无关紧要, 或者你希望在操作二进制位和字节时避免符号扩展的问题, 请使用对应的无符号类型。 但是, 要注意在表达式中混用有符号和无符号值的情况。 
  
 &nbs</div>
                                </li>
                                <li><a href="/article/3455.htm"
                                       title="maven问题" target="_blank">maven问题</a>
                                    <span class="text-muted">zhb8015</span>
<a class="tag" taget="_blank" href="/search/maven%E9%97%AE%E9%A2%98/1.htm">maven问题</a>
                                    <div>  
问题1: 
Eclipse 中 新建maven项目 无法添加src/main/java 问题 
   eclipse创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder。 
    按照maven目录结构,添加src/main/ja</div>
                                </li>
                                <li><a href="/article/3582.htm"
                                       title="(二)androidpn-server tomcat版源码解析之--push消息处理" target="_blank">(二)androidpn-server tomcat版源码解析之--push消息处理</a>
                                    <span class="text-muted">spjich</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/androdipn/1.htm">androdipn</a><a class="tag" taget="_blank" href="/search/%E6%8E%A8%E9%80%81/1.htm">推送</a>
                                    <div>在 (一)androidpn-server tomcat版源码解析之--项目启动这篇中,已经描述了整个推送服务器的启动过程,并且把握到了消息的入口即XmppIoHandler这个类,今天我将继续往下分析下面的核心代码,主要分为3大块,链接创建,消息的发送,链接关闭。 
先贴一段XmppIoHandler的部分代码 
/**
     * Invoked from an I/O proc</div>
                                </li>
                                <li><a href="/article/3709.htm"
                                       title="用js中的formData类型解决ajax提交表单时文件不能被serialize方法序列化的问题" target="_blank">用js中的formData类型解决ajax提交表单时文件不能被serialize方法序列化的问题</a>
                                    <span class="text-muted">中华好儿孙</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</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/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6/1.htm">上传文件</a><a class="tag" taget="_blank" href="/search/FormData/1.htm">FormData</a>
                                    <div>
var formData = new FormData($("#inputFileForm")[0]);
$.ajax({
		type:'post',
		url:webRoot+"/electronicContractUrl/webapp/uploadfile",
		data:formData,
		async: false,
		ca</div>
                                </li>
                                <li><a href="/article/3836.htm"
                                       title="mybatis常用jdbcType数据类型" target="_blank">mybatis常用jdbcType数据类型</a>
                                    <span class="text-muted">ysj5125094</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/mapper/1.htm">mapper</a><a class="tag" taget="_blank" href="/search/jdbcType/1.htm">jdbcType</a>
                                    <div>  
MyBatis 通过包含的jdbcType
类型 
BIT         FLOAT      CHAR          </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>