Python爬虫实战02:分析Ajax请求并抓取今日头条街拍

1 目标网站分析

首先我们打开今日头条网站,搜索 街拍,点击图集,这里每就是我们要爬取的目录,我们称为索引页。1
Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第1张图片

点开一个标题,进去,称为详情页。2这里面的图是我们所要爬取的。比如这里可以点击图片,共7张图。2
Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第2张图片

这里我们可以想到,可以先把详情页的每个标题URL爬取下来,再请求详情页得到每个图集。

分析详情页代码,打开谷歌浏览器开发工具,选择Network,刷新网页。发现第一个请求中返回的不含图片的任何信息。

想到头条应该是Ajax请求,选择XHR,继续刷新,点击图集。发现我们点击图集发出的请求返回的代码中data中含有我们想要的图片信息,是Json格式。可以看到title信息,刚好符合。
3Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第3张图片

Headers,属于get请求,可以看到请求参数。
4Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第4张图片

也可以看到我们请求索引页的网址。
Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第5张图片

然后滑动网页,发现左边又多了个请求,offset=20,由此得知索引页可通过改变offset来换页。6
Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第6张图片

继续看详情页,我们想找到每个图集的内容。同样打开network工具,刷新网页。选择XHR,发现每个请求中都不包含图集信息。选择ALL查看,我们可以看到对应网址的请求返回了一段代码。我们右击图片,新窗口查看,得到图片的地址后面的数字。到前面的代码中搜索,发现图片信息恰好在gallery: JSON.parse(” “)中,是Json格式。其中’sub_image’的值包含的就是我们想要获取的图集的信息。7
Python爬虫实战02:分析Ajax请求并抓取今日头条街拍_第7张图片

理一下基本思路:

  1. 爬取索引页的信息。通过分析ajax请求,得到每个详情页的网址。(比如这里就返回了18个详情页)
  2. 爬取详情页的信息,分析网页代码,用正则表达式得到每个图集的信息。
  3. 将爬取的信息存到MongoDB,并下载图片。
  4. 通过改变offset爬取多页信息,利用多线程加快速度。

2 流程框架

  • 抓取索引页内容

    利用requests请求目标站点,得到索引网页HTML代码,返回结果。

  • 抓取详情页内容

    解析返回结果,得到详情页的链接,并进一步抓取详情页的信息。

  • 下载图片与保存数据库

    将下载的图片保存到本地,并把页面信息及图片URL保存至MongDB.

  • 开启循环和多线程

    对多页内容遍历,开启多线程提高抓取速度。

3 爬虫实战

使用pycharm。

3.1 抓取索引页内容

def get_page_index(offset, keyword):
    """抓取索引页的内容"""
    data = {  # 请求参数,offset和keyword我们设置成变量,方便改变。
        'offset': offset,
        'format': 'json',
        'keyword': keyword,
        'autoload': 'true',
        'count': 20,
        'cur_tab': 3,
        'from': 'gallery'
    }
    # urlencode()可以把字典对象转化为url的请求参数
    url = 'https://www.toutiao.com/search_content/?' + urlencode(data)
    try:  # 防止程序中断
        response = requests.get(url)  
        if response.status_code == 200:  # 如果访问成功则返回文本内容
            return response.text
        return None
    except RequestException:
        print('请求索引页出错')
        return None

3.2 解析索引数据

def parse_page_index(html):
    """ 解析索引数据"""
    # json.loads()对JSON数据进行解码,转换成一个字典
    data = json.loads(html)
    # 当data这个字典存在且'data'键名存在与data字典中。data.keys()返回data这个字典所有的键名
    if data and 'data' in data.keys():
        # get() 函数返回字典中指定键的值,在这里遍历data字典中键名为'data'的
        # 值,每个元素分别为一个图集。
        for item in data.get('data'):
            # 对于'data'的值中的每个元素,建立一个生成器,得到每个网址
            yield item.get('article_url')  # 'article_url'中信息是每个图集的网址

3.3 获取详情页信息

def get_page_detail(url):
    """ 拿到详情页图的信息"""
    try:
        # 此处不加headers会导致访问详情页失败
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64;x64)AppleWebKit/537.36(KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        print('请求详情页出错', url)
        return None

3.4 解析详情页

def parse_page_detail(html, url):
    """ 解析详情页"""
    # 声明解析后的网页对象
    soup = BeautifulSoup(html, 'lxml')
    # 通过传入css选择器,选择第一个标签,获取文本内容,就是图集的标题。</span>
    title = soup.select(<span class="hljs-string">'title'</span>)[<span class="hljs-number">0</span>].get_text()
    <span class="hljs-comment"># 声明一个正则表达式对象,来匹配我们想要的Json语句。注意re.S使 . 能匹配任意字符。</span>
    images_pattern = re.compile(<span class="hljs-string">'gallery: JSON.parse\("(.*?)"\),'</span>, re.S)
    result = re.search(images_pattern, html)
    <span class="hljs-comment"># 注意:这里的Json语句包含转义字符 \ ,不去掉会报错</span>
    result = result.group(<span class="hljs-number">1</span>).replace(<span class="hljs-string">'\\'</span>, <span class="hljs-string">''</span>)
    <span class="hljs-comment"># result = re.sub(r'\\', '', result.group(1))</span>
    <span class="hljs-keyword">if</span> result:  <span class="hljs-comment"># 结果存在则进行</span>
        data = json.loads(result)  <span class="hljs-comment"># 把Json转换为字典</span>
        <span class="hljs-keyword">if</span> data <span class="hljs-keyword">and</span> <span class="hljs-string">'sub_images'</span> <span class="hljs-keyword">in</span> data.keys():
            <span class="hljs-comment"># 'sub_images'这个键的值是一个列表,里面每个元素是字典,包含每个图集的地址。</span>
            sub_images = data.get(<span class="hljs-string">'sub_images'</span>)   <span class="hljs-comment"># 得到图集的地址</span>
            images = [item.get(<span class="hljs-string">'url'</span>) <span class="hljs-keyword">for</span> item <span class="hljs-keyword">in</span> sub_images]  <span class="hljs-comment"># 构造一个图集列表,包含每个图片的地址。</span>
            <span class="hljs-keyword">for</span> image <span class="hljs-keyword">in</span> images:
                download_image(image)  <span class="hljs-comment"># 下载每张图片</span>
            <span class="hljs-keyword">return</span> {  <span class="hljs-comment"># 返回一个字典,格式化数据,准备存入MongoDB</span>
                <span class="hljs-string">'title'</span>: title,
                <span class="hljs-string">'url'</span>: url,
                <span class="hljs-string">'images'</span>: images,
            }</code></pre> 
  <h4 id="35-定义下载图片函数">3.5 定义下载图片函数</h4> 
  <pre class="prettyprint"><code class="language-python hljs "><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">download_image</span><span class="hljs-params">(url)</span>:</span>  <span class="hljs-comment"># 传入的是每张图片的地址</span>
    <span class="hljs-string">""" 下载图片"""</span>
    print(<span class="hljs-string">'正在下载'</span>, url)  <span class="hljs-comment"># 调试信息</span>
    <span class="hljs-keyword">try</span>:
        headers = {<span class="hljs-string">'User-Agent'</span>: <span class="hljs-string">'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'</span>
                                 <span class="hljs-string">'(KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'</span>}
        response = requests.get(url, headers=headers)
        <span class="hljs-keyword">if</span> response.status_code == <span class="hljs-number">200</span>:
            save_image(response.content)  <span class="hljs-comment"># 保存图片,content返回二进制内容(当保存图片视频时)</span>
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">None</span>
    <span class="hljs-keyword">except</span> RequestException:
        print(<span class="hljs-string">'请求图片出错'</span>, url)
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">None</span></code></pre> 
  <h4 id="36-定义保存图片函数">3.6 定义保存图片函数</h4> 
  <pre class="prettyprint"><code class="language-python hljs "><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">save_image</span><span class="hljs-params">(content)</span>:</span>
    <span class="hljs-string">"""存图片"""</span>
    <span class="hljs-comment"># 定义文件路径,文件名把图片信息md5加密,保证每个文件名不同。</span>
    file_path = <span class="hljs-string">'{0}/{1}.{2}'</span>.format(os.getcwd() +
                                     <span class="hljs-string">'\images'</span>, md5(content).hexdigest(), <span class="hljs-string">'jpg'</span>)
    <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> os.path.exists(file_path):  <span class="hljs-comment"># 如果文件不存在</span>
        <span class="hljs-keyword">with</span> open(file_path, <span class="hljs-string">'wb'</span>) <span class="hljs-keyword">as</span> f:
            f.write(content)
<span class="hljs-string">'''
w     以写方式打开,不存在则创建
a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+     以读写模式打开
w+     以读写模式打开 (参见 w )
a+     以读写模式打开 (参见 a )
rb     以二进制读模式打开
wb     以二进制写模式打开 (参见 w )
ab     以二进制追加模式打开 (参见 a )
rb+    以二进制读写模式打开 (参见 r+ )
wb+    以二进制读写模式打开 (参见 w+ )
ab+    以二进制读写模式打开 (参见 a+ )'''</span></code></pre> 
  <h4 id="37-存储到数据库">3.7 存储到数据库</h4> 
  <pre class="prettyprint"><code class="language-python hljs ">client = pymongo.MongoClient(MONGO_URL)
db = client[MONGO_DB]
<span class="hljs-comment"># 其中MONGO_DB,MONGO_URL为配置文件中的参数</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">save_to_mongo</span><span class="hljs-params">(result)</span>:</span>
    <span class="hljs-string">"""存储文件到数据库"""</span>
    <span class="hljs-keyword">if</span> db[MONGO_DB].insert(result):
        print(<span class="hljs-string">'存储成功'</span>, result)
        <span class="hljs-keyword">return</span> <span class="hljs-keyword">True</span>
    <span class="hljs-keyword">return</span> <span class="hljs-keyword">False</span></code></pre> 
  <h4 id="38-主函数">3.8 主函数</h4> 
  <pre class="prettyprint"><code class="language-python hljs "><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">(offset)</span>:</span>
    <span class="hljs-string">""" 主函数"""</span>
    html = get_page_index(offset, KEYWORD)  <span class="hljs-comment"># 获取索引页网页内容</span>
    <span class="hljs-keyword">for</span> url <span class="hljs-keyword">in</span> parse_page_index(html):  <span class="hljs-comment"># parse_page_index()返回一个生成器,生成每个图集的地址</span>
        html = get_page_detail(url)  <span class="hljs-comment"># 得到每个图集详情页的内容</span>
        <span class="hljs-keyword">if</span> html:  <span class="hljs-comment"># 如果内容返回成功</span>
            result = parse_page_detail(html, url) <span class="hljs-comment"># 解析详情页,返回一个字典结果</span>
            save_to_mongo(result)  <span class="hljs-comment"># 存入数据库</span></code></pre> 
  <h4 id="39-运行">3.9 运行</h4> 
  <pre class="prettyprint"><code class="language-python hljs "><span class="hljs-keyword">if</span> __name__ == <span class="hljs-string">'__main__'</span>:
    groups = [x * <span class="hljs-number">20</span> <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> range(GROUP_START, GROUP_END + <span class="hljs-number">1</span>)]  <span class="hljs-comment"># 生成一个offset列表</span>
    pool = Pool()  <span class="hljs-comment"># 声明一个进程池</span>
    pool.map(main, groups)
    pool.close()
    pool.join()</code></pre> 
  <h4 id="310-头文件">3.10 头文件</h4> 
  <pre class="prettyprint"><code class="language-python hljs "><span class="hljs-keyword">import</span> json
<span class="hljs-keyword">import</span> os
<span class="hljs-keyword">import</span> re
<span class="hljs-keyword">from</span> hashlib <span class="hljs-keyword">import</span> md5
<span class="hljs-keyword">from</span> multiprocessing <span class="hljs-keyword">import</span> Pool

<span class="hljs-keyword">from</span> urllib.parse <span class="hljs-keyword">import</span> urlencode
<span class="hljs-keyword">import</span> pymongo
<span class="hljs-keyword">import</span> requests
<span class="hljs-keyword">from</span> bs4 <span class="hljs-keyword">import</span> BeautifulSoup
<span class="hljs-keyword">from</span> requests.exceptions <span class="hljs-keyword">import</span> RequestException

<span class="hljs-keyword">from</span> ToutiaoJiepai.config <span class="hljs-keyword">import</span> *</code></pre> 
  <h4 id="311-创建配置文件configpy">3.11 创建配置文件config.py</h4> 
  <pre class="prettyprint"><code class="language-python hljs "><span class="hljs-comment"># config.py</span>
MONGO_URL = <span class="hljs-string">'localhost'</span>
MONGO_DB = <span class="hljs-string">'toutiao'</span>
MONGO_TABLE = <span class="hljs-string">'toutiao'</span>

GROUP_START = <span class="hljs-number">1</span>
GROUP_END = <span class="hljs-number">1</span>
KEYWORD = <span class="hljs-string">'街拍'</span>
</code></pre> 
  <p><strong>多用<code>if</code>语句的异常语句来保证程序的顺利进行。</strong></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1175165884788977664"></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">你可能感兴趣的:(爬虫)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1882223706349039616.htm"
                           title="Python爬虫项目合集:200个Python爬虫项目带你从入门到精通" target="_blank">Python爬虫项目合集:200个Python爬虫项目带你从入门到精通</a>
                        <span class="text-muted">人工智能_SYBH</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E8%AF%95%E8%AF%BB/1.htm">爬虫试读</a><a class="tag" taget="_blank" href="/search/2025%E5%B9%B4%E7%88%AC%E8%99%AB%E7%99%BE%E7%AF%87%E5%AE%9E%E6%88%98%E5%AE%9D%E5%85%B8%3A/1.htm">2025年爬虫百篇实战宝典:</a><a class="tag" taget="_blank" href="/search/%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/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/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%A4%A7%E5%85%A8/1.htm">爬虫项目大全</a><a class="tag" taget="_blank" href="/search/Python%E7%88%AC%E8%99%AB%E9%A1%B9%E7%9B%AE%E5%90%88%E9%9B%86/1.htm">Python爬虫项目合集</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A%E9%A1%B9%E7%9B%AE/1.htm">爬虫从入门到精通项目</a>
                        <div>适合人群无论你是刚接触编程的初学者,还是已经掌握一定Python基础并希望深入了解网络数据采集的开发者,这个专栏都将为你提供系统化的学习路径。通过循序渐进的理论讲解、代码实例和实践项目,你将获得扎实的爬虫开发技能,适应不同场景下的数据采集需求。专栏特色从基础到高级,内容体系全面专栏内容从爬虫的基础知识与工作原理开始讲解,逐渐覆盖静态网页、动态网页、API数据爬取等实用技术。后续还将深入解析反爬机制</div>
                    </li>
                    <li><a href="/article/1882176148524298240.htm"
                           title="WebRover :一个功能强大的 Python 库,用于从 Web 内容生成高质量的数据集。" target="_blank">WebRover :一个功能强大的 Python 库,用于从 Web 内容生成高质量的数据集。</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E9%9B%86/1.htm">数据集</a>
                        <div>2024-11-30,由Area-25团队开发的一个专门用于生成高质量网络内容数据集的Python库。该数据集旨在为大型语言模型(LLM)和人工智能应用的训练提供丰富的数据资源。数据集地址:WebRoverDataset|自然语言处理数据集|AI模型训练数据集一、让我们一起来看一下WebRoverWebRover通过智能网络爬虫技术,自动从网络中提取与特定主题相关的内容,并支持多种输入格式,如JS</div>
                    </li>
                    <li><a href="/article/1882161516212449280.htm"
                           title="网络爬虫~" target="_blank">网络爬虫~</a>
                        <span class="text-muted">rzydal</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>简介网络爬虫,也被称为网页蜘蛛、网络机器人、网页抓取器或网页追逐者,是一种自动化程序或脚本。以下是对网络爬虫的详细介绍一、定义与工作原理网络爬虫按照一定的规则自动地抓取万维网上的信息。它模拟人类用户在网页上的行为,通过发送HTTP请求获取网页内容,并解析网页内容以提取所需信息。通常,网络爬虫从一个或多个种子URL开始,逐步抓取网页中的链接,并递归地访问这些链接,直到满足某个条件(如达到一定的抓取深</div>
                    </li>
                    <li><a href="/article/1882151808164491264.htm"
                           title="初学python爬虫,爬取“豆瓣电影 Top 250”相关信息,并下载电影封面" target="_blank">初学python爬虫,爬取“豆瓣电影 Top 250”相关信息,并下载电影封面</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/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/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                        <div>文章目录注:一、爬取“豆瓣电影Top250”相关信息:1、准备工作2、获取数据补充:urllib3、标签解析补充:BeautifulSoup4和re4、保存数据补充:xlwt附:爬取“豆瓣电影Top250”相关信息的完整代码:二、爬取/下载top250电影对应的封面效果展示附:下载电影封面的完整代码:注:所学的视频教程:B站Python爬虫基础5天速成(2021全新合集)Python入门+数据可视</div>
                    </li>
                    <li><a href="/article/1882148017084100608.htm"
                           title="网络爬虫技术如何影响网络安全的" target="_blank">网络爬虫技术如何影响网络安全的</a>
                        <span class="text-muted">silver687</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>网络爬虫技术对网络安全的影响是多方面的,既有积极的一面,也有消极的一面。以下是具体分析:积极影响1.网络安全监测与漏洞发现网络爬虫可以被用于网络安全监测,帮助企业和机构发现网站或网络系统中的漏洞和安全隐患。例如,通过爬取网站内容,检测是否存在SQL注入、XSS攻击等潜在漏洞。2.威胁情报收集爬虫技术可用于收集网络上的威胁情报,帮助安全研究人员了解最新的攻击手段、恶意软件传播路径等,从而提前做好防御</div>
                    </li>
                    <li><a href="/article/1882132506745040896.htm"
                           title="爬取NBA球员信息并可视化小白入门" target="_blank">爬取NBA球员信息并可视化小白入门</a>
                        <span class="text-muted">Serendipity_Carl</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E6%95%B0%E5%88%86/1.htm">爬虫数分</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80/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/%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">数据可视化</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a>
                        <div>网址:虎扑体育-NBA球员得分数据排行第1页步骤:分析页面确定URL地址模拟浏览器向服务器发送请求数据解析提取想要的数据保存数据爬虫所需要的模块requests(发送HTTP请求)parsel(解析HTML内容)pandas(数据保存模块)第一步分析页面--确定是静态页面还是动态页面右击点击查看网页源代码在新窗口中搜索(Ctrl+F)我们所需要的数据通过分析可得此网站为静态页面URL地址为浏览器栏</div>
                    </li>
                    <li><a href="/article/1882115483713466368.htm"
                           title="WebRover: 专为训练大型语言模型和 AI 应用程序而设计的 Python 库" target="_blank">WebRover: 专为训练大型语言模型和 AI 应用程序而设计的 Python 库</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E9%9B%86/1.htm">数据集</a>
                        <div>2024-11-30,由Area-25团队开发的一个专门用于生成高质量网络内容数据集的Python库。该数据集旨在为大型语言模型(LLM)和人工智能应用的训练提供丰富的数据资源。数据集地址:WebRoverDataset|自然语言处理数据集|AI模型训练数据集一、让我们一起来看一下WebRoverWebRover通过智能网络爬虫技术,自动从网络中提取与特定主题相关的内容,并支持多种输入格式,如JS</div>
                    </li>
                    <li><a href="/article/1882098197501898752.htm"
                           title="svm python 模型绘图_1SVM处理数据并绘图" target="_blank">svm python 模型绘图_1SVM处理数据并绘图</a>
                        <span class="text-muted">张炜大师傅</span>
<a class="tag" taget="_blank" href="/search/svm/1.htm">svm</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E7%BB%98%E5%9B%BE/1.htm">模型绘图</a>
                        <div>爬虫Python基础、数据分析扩展包Numpy、pandas、matplotlib,Python读取MySQL数据,Python爬虫及Scrapy框架,无监督机器学习算法聚类分析等,以及案例:互联网金融行业客户价值分析等。机器学习机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有</div>
                    </li>
                    <li><a href="/article/1881986858322292736.htm"
                           title="Python 实现简单的爬虫" target="_blank">Python 实现简单的爬虫</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/%E8%81%8C%E5%9C%BA/1.htm">职场</a><a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>Python是一种跨平台的计算机程序设计语言,面向对象动态类型语言,Python是纯粹的自由软件,源代码和解释器cpython遵循GPL(GNUGeneralPublicLicense)协议,随着版本的不断更新和语言新功能的添加,Python越来越多被用于独立的、大型项目的开发。快速抓取网页:使用urllib最基本的抓取功能,将百度首页的内容保存到本地目录下.importurllib.reques</div>
                    </li>
                    <li><a href="/article/1881982699279806464.htm"
                           title="drissionpage爬虫自动化入门案例与视频教程与相关代码" target="_blank">drissionpage爬虫自动化入门案例与视频教程与相关代码</a>
                        <span class="text-muted">十一姐</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/drissionpage/1.htm">drissionpage</a>
                        <div>目录零、各种关于drissionpage文章视频案例解决方案合集一、dp安装与首次打开网页测试使用二、dp获取网页内容html/text/attr入门三、dp输入点击input/click/eles元素交互等入门四、dp获取cookies信息入门五、dp实现翻页并下载图片入门六、dp实现网页接口数据包监听入门(类似network和fiddler)七、dp实现高并发10倍速度爬取详情页信息八、dp实</div>
                    </li>
                    <li><a href="/article/1881977517988966400.htm"
                           title="淘宝爬虫自动化" target="_blank">淘宝爬虫自动化</a>
                        <span class="text-muted">qq_42307546</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>importjsonimportosimportreimportthreadingimporttimeimportopenpyxlfromDrissionPageimportChromiumOptions,ChromiumPage#创建一个excel文件defcreate_excel(file_name):#实例化工作簿对象workbook=openpyxl.Workbook()#激活当前工作表w</div>
                    </li>
                    <li><a href="/article/1881966918223589376.htm"
                           title="【爬虫】使用 Scrapy 框架爬取豆瓣电影 Top 250 数据的完整教程" target="_blank">【爬虫】使用 Scrapy 框架爬取豆瓣电影 Top 250 数据的完整教程</a>
                        <span class="text-muted">brhhh_sehe</span>
<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>前言在大数据和网络爬虫领域,Scrapy是一个功能强大且广泛使用的开源爬虫框架。它能够帮助我们快速地构建爬虫项目,并高效地从各种网站中提取数据。在本篇文章中,我将带大家从零开始使用Scrapy框架,构建一个简单的爬虫项目,爬取豆瓣电影Top250的电影信息。Scrapy官方文档:ScrapyDocumentation豆瓣电影Top250:豆瓣电影Top250本文的爬虫项目配置如下:系统:Windo</div>
                    </li>
                    <li><a href="/article/1881965910785323008.htm"
                           title="爬虫笔记21——DrissionPage自动化框架的使用" target="_blank">爬虫笔记21——DrissionPage自动化框架的使用</a>
                        <span class="text-muted">墨菲马</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E7%AC%94%E8%AE%B0/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%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a>
                        <div>DrissionPage自动化框架的使用前言DrissionPage的使用1、准备工具及初步了解2、ChromiumPage的使用(操作浏览器)访问页面初始化配置元素定位iFrame切换元素监听动作链的简单使用3、SessionPage的使用(收发数据包)4、WebPage前言有人说,自动化框架降低了逆向的成本,当遇到不会的逆向,我用自动化解决问题,这其实是有道理的,哈哈哈~。但是,自动化框架其实</div>
                    </li>
                    <li><a href="/article/1881960988991877120.htm"
                           title="如何优化爬虫以提高效率" target="_blank">如何优化爬虫以提高效率</a>
                        <span class="text-muted">数据小小爬虫</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>在使用Python爬虫获取数据时,遵循一些最佳实践可以提高爬虫的效率和稳定性,同时避免潜在的法律和道德风险。以下是一些推荐的最佳实践:一、遵守robots.txt协议robots.txt文件是网站用来告诉爬虫哪些页面可以爬取,哪些不可以的规则文件。遵守robots.txt协议是爬虫的基本道德准则,可以避免对网站造成不必要的负担。二、使用合适的库和框架根据项目需求选择合适的爬虫库和框架。常用的库有r</div>
                    </li>
                    <li><a href="/article/1881948882259210240.htm"
                           title="scrapy学习之爬虫练习平台爬取" target="_blank">scrapy学习之爬虫练习平台爬取</a>
                        <span class="text-muted">LLLibra146</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>
                        <div>本文章首发于个人博客,链接为:https://blog.d77.xyz/archives/35dbd7c9.html前言为了练习Scrapy,找了一个爬虫练习平台,网址为:https://scrape.center/,目前爬取了前十个比较简单的网站,在此感谢平台作者提供的练习平台。环境搭建开始爬取前,首先要先把环境搭建起来,Pycharm新建项目learnscrapy和对应的虚拟环境,安装好Scr</div>
                    </li>
                    <li><a href="/article/1881946489081622528.htm"
                           title="如何学习爬虫技术:从入门到实践的全面指南" target="_blank">如何学习爬虫技术:从入门到实践的全面指南</a>
                        <span class="text-muted">CodeJourney.</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>一、引言在当今数字化时代,网络上的数据量呈爆炸式增长,能够高效地获取和处理这些数据变得愈发重要。爬虫技术作为一种从网页中自动提取信息的手段,在各个领域都有着广泛的应用,无论是数据分析、机器学习的数据集构建,还是市场调研、价格监测等商业场景,掌握爬虫技术都能为你打开一扇获取丰富信息资源的大门。然而,对于初学者来说,面对琳琅满目的工具和复杂的网络环境,可能会感到无从下手。本文将带你逐步深入了解爬虫技术</div>
                    </li>
                    <li><a href="/article/1881832386233167872.htm"
                           title="webdriver 反爬虫 (selenium反爬虫) 绕过" target="_blank">webdriver 反爬虫 (selenium反爬虫) 绕过</a>
                        <span class="text-muted">m0_74824044</span>
<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><a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7/1.htm">测试工具</a>
                        <div>1.webdriver反爬虫原理爬虫程序可以借助渲染工具从动态网页中获取数据。在这个过程中,“借助”其实是通过对应的浏览器驱动(即WebDriver)向浏览器发出指令的行为。因此,开发者可以根据客户端是否包含浏览器驱动这一特征来区分正常用户和爬虫程序。webdriver属性是我们最常听到的,通过webdriver驱动浏览器就会包含这一属性,因此可用来辨别爬虫程序(可检测的属性远不止这一种)。Web</div>
                    </li>
                    <li><a href="/article/1881763783404220416.htm"
                           title="python爬虫——pandas的简单使用" target="_blank">python爬虫——pandas的简单使用</a>
                        <span class="text-muted">张謹礧</span>
<a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB%2B%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">python爬虫+可视化</a><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/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>pandas作为爬虫中最重要的包之一,我们要想学好爬虫,就必须要深入了解pandas直接上代码importpandasaspdimportnumpyasnpdata=pd.DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],#如果不写列索引默认为0,1,2,3columns=['a','b','c','d'])print(d</div>
                    </li>
                    <li><a href="/article/1881737171887517696.htm"
                           title="python网络爬虫selenium(1)" target="_blank">python网络爬虫selenium(1)</a>
                        <span class="text-muted">2401_84009529</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/selenium/1.htm">selenium</a>
                        <div>pipinstallselenium以Chrom浏览器为例,安装相应版本的chromdriver驱动程序,并添加为环境变量安装链接:安装chromdriver2.常用属性和方法===============================================================================fromseleniumimportwebdriverimport</div>
                    </li>
                    <li><a href="/article/1881736288604844032.htm"
                           title="用Python爬虫获取微博热搜词:数据抓取、分析与可视化全流程" target="_blank">用Python爬虫获取微博热搜词:数据抓取、分析与可视化全流程</a>
                        <span class="text-muted">Python爬虫项目</span>
<a class="tag" taget="_blank" href="/search/2025%E5%B9%B4%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/1.htm">2025年爬虫实战项目</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/selenium/1.htm">selenium</a>
                        <div>引言微博作为中国最受欢迎的社交平台之一,每时每刻都在更新着海量的内容。其中,微博热搜词反映了用户关注的热点话题、社会事件及潮流趋势。对于数据分析、情感分析以及趋势预测等领域,获取微博热搜数据是一个非常有价值的任务。在本篇博客中,我们将详细介绍如何使用Python爬虫技术获取微博的热搜词,并进行数据分析和可视化。通过全流程的讲解,帮助你了解如何通过爬虫技术抓取并分析微博热搜词数据。一、爬虫技术概述与</div>
                    </li>
                    <li><a href="/article/1881727090026409984.htm"
                           title="自动化办公python脚本_Python自动化办公" target="_blank">自动化办公python脚本_Python自动化办公</a>
                        <span class="text-muted">weixin_39834281</span>
<a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E5%8A%9E%E5%85%ACpython%E8%84%9A%E6%9C%AC/1.htm">自动化办公python脚本</a>
                        <div>在公司购买的OA系统上,很多功能都是软件商开发好的,如果有什么自定义的需求,也很难实现。现实情况下需要将一个工单的各类信息汇总整理为一份Excel,看似简单的需求,却需要在OA系统上反复点击多次,人工汇总。本章我们看看如何使用Python爬虫帮同事解决这个问题的。点击工单号之后才可以看到更多信息一、技术路线requests_html二、环境准备fromrequests_htmlimportHTML</div>
                    </li>
                    <li><a href="/article/1881717753392459776.htm"
                           title="hive电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]" target="_blank">hive电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]</a>
                        <span class="text-muted">QQ-1305637939</span>
<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%E6%AF%95%E8%AE%BE/1.htm">大数据毕设</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">计算机毕业设计</a><a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>hive电影数据分析Springboot协同过滤-余弦函数推荐系统爬虫2万+数据大屏数据展示+[手把手视频教程和开发文档]【功能介绍】1.java爬取【豆瓣电影】网站中电影数据,保存为data.csv文件,数据量2万+2.data.csv上传到hadoop集群环境3.MR数据清洗data.csv4.Hive汇总处理,将Hive处理的结果数据保存到本地Mysql数据库中5.Springboot+Vu</div>
                    </li>
                    <li><a href="/article/1881717754625585152.htm"
                           title="hadoop电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]" target="_blank">hadoop电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]</a>
                        <span class="text-muted">QQ-1305637939</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">计算机毕业设计</a><a class="tag" taget="_blank" href="/search/%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%E6%AF%95%E8%AE%BE/1.htm">大数据毕设</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>全套视频教程全套开发文档hadoop电影数据分析系统Springboot协同过滤-余弦函数推荐系统爬虫2万+数据大屏数据展示【Hadoop项目】1.java爬取【豆瓣电影】网站中电影数据,保存为data.csv文件,数据量2万+2.data.csv上传到hadoop集群环境3.data.csv数据清洗4.MR数据汇总处理,将Reduce的结果数据保存到本地Mysql数据库中5.Springboot</div>
                    </li>
                    <li><a href="/article/1881717627043246080.htm"
                           title="spark电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]" target="_blank">spark电影数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫2万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]</a>
                        <span class="text-muted">QQ-1305637939</span>
<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%E6%AF%95%E8%AE%BE/1.htm">大数据毕设</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">计算机毕业设计</a><a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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/%E7%94%B5%E5%BD%B1%E6%8E%A8%E8%8D%90/1.htm">电影推荐</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%BD%B1%E5%88%86%E6%9E%90/1.htm">电影分析</a>
                        <div>spark电影数据分析系统Springboot协同过滤-余弦函数推荐系统爬虫2万+数据大屏数据展示+[手把手视频教程和开发文档【功能介绍】1.java爬取【豆瓣电影】网站中电影数据,保存为data.csv文件,数据量2万+2.data.csv上传到hadoop集群环境3.MR数据清洗data.csv4.Spark汇总处理,将Spark处理的结果数据保存到本地Mysql数据库中5.Springboo</div>
                    </li>
                    <li><a href="/article/1881717623880740864.htm"
                           title="hadoop图书数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫1万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]" target="_blank">hadoop图书数据分析系统 Springboot协同过滤-余弦函数推荐系统 爬虫1万+数据 大屏数据展示 + [手把手视频教程 和 开发文档]</a>
                        <span class="text-muted">QQ-1305637939</span>
<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%E6%AF%95%E8%AE%BE/1.htm">大数据毕设</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E4%B9%A6%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">图书数据分析</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>hadoop图书数据分析系统Springboot协同过滤-余弦函数推荐系统爬虫1万+数据大屏数据展示+[手把手视频教程和开发文档]【亮点功能】1.Springboot+Vue+Element-UI+Mysql前后端分离2.Echarts图表统计数据,直观展示数据情况3.发表评论后,用户可以回复评论,回复的评论可以被再次回复,一级评论可以添加图片附件4.爬虫图书数据1万+5.推荐图书列表展示,推荐图</div>
                    </li>
                    <li><a href="/article/1881715732153167872.htm"
                           title="Python正则表达式详解" target="_blank">Python正则表达式详解</a>
                        <span class="text-muted">程序员老华</span>
<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><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a>
                        <div>正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。下面,我来介绍一下python中的正则表达式是怎么使用的。首先,python中的正则表达</div>
                    </li>
                    <li><a href="/article/1881715101778636800.htm"
                           title="Python爬虫工具BeautifulSoup使用详解" target="_blank">Python爬虫工具BeautifulSoup使用详解</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/beautifulsoup/1.htm">beautifulsoup</a>
                        <div>目录一、模块简介二、方法利用1、安装beautifulsoup2、引入模块3、选择解析器解析指定内容三、具体利用1、获取拥有指定属性的标签2、获取标签的属性值3、获取标签中的内容4、stripped_strings四、输出1、格式化输出prettify()2、get_text()一、模块简介BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换</div>
                    </li>
                    <li><a href="/article/1881702618313584640.htm"
                           title="Python爬虫天气预报(小白入门)(1)" target="_blank">Python爬虫天气预报(小白入门)(1)</a>
                        <span class="text-muted">2401_84009993</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>首先来到目标数据的网页http://www.weather.com.cn/weather40d/101280701.shtml中国天气网我们可以看到,我们需要的天气数据都是放在图表上的,在切换月份的时候,发现只有部分页面刷新了,就是天气数据的那块,而URL没有变化。这是因为网页前端使用了JS异步加载的技术,更新时不用加载整个页面,从而提升了网页的加载速度。对于这种非静态页面,我们在请求数据时,就不</div>
                    </li>
                    <li><a href="/article/1881668045399715840.htm"
                           title="Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字" target="_blank">Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字</a>
                        <span class="text-muted">是Dream呀</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>前言:零基础学Python:Python从0到100最新最全教程。想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、计算机视觉、机器学习、神经网络以及人工智能相关知识,成为学习学习和学业的先行者!欢迎大家订阅专栏:零基础学Python:Python从0到100最新</div>
                    </li>
                    <li><a href="/article/1881665519141056512.htm"
                           title="100天精通Python(基础篇)——第19天:异常类型大全、异常处理介绍" target="_blank">100天精通Python(基础篇)——第19天:异常类型大全、异常处理介绍</a>
                        <span class="text-muted">袁袁袁袁满</span>
<a class="tag" taget="_blank" href="/search/100%E5%A4%A9%E7%B2%BE%E9%80%9APython/1.htm">100天精通Python</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><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/mce%E5%BC%82%E5%B8%B8/1.htm">mce异常</a>
                        <div>目录1.异常的概念2.异常类型1)Python内置异常2)requests爬虫模块内置异常类3)自定义异常2.捕获异常1)简单的捕获异常语法2)错误类型捕获3)异常捕获完整语法3.异常的传递4.抛出raise异常1)应用场景2)抛出异常1.异常的概念程序在运行时,如果Python解释器遇到到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常程序停止执行并且提示错误信息这个动作,我们通常称</div>
                    </li>
                                <li><a href="/article/112.htm"
                                       title="HQL之投影查询" target="_blank">HQL之投影查询</a>
                                    <span class="text-muted">归来朝歌</span>
<a class="tag" taget="_blank" href="/search/HQL/1.htm">HQL</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5/1.htm">查询语句</a><a class="tag" taget="_blank" href="/search/%E6%8A%95%E5%BD%B1%E6%9F%A5%E8%AF%A2/1.htm">投影查询</a>
                                    <div>        在HQL查询中,常常面临这样一个场景,对于多表查询,是要将一个表的对象查出来还是要只需要每个表中的几个字段,最后放在一起显示? 
针对上面的场景,如果需要将一个对象查出来: 
HQL语句写“from 对象”即可 
Session session = HibernateUtil.openSession();
		</div>
                                </li>
                                <li><a href="/article/239.htm"
                                       title="Spring整合redis" target="_blank">Spring整合redis</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>pom.xml 
 

<dependencies>
		<!-- Spring Data - Redis Library -->
		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-redi</div>
                                </li>
                                <li><a href="/article/366.htm"
                                       title="org.hibernate.NonUniqueResultException: query did not return a unique result: 2" target="_blank">org.hibernate.NonUniqueResultException: query did not return a unique result: 2</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a>
                                    <div>参考:http://blog.csdn.net/qingfeilee/article/details/7052736 
org.hibernate.NonUniqueResultException: query did not return a unique result: 2 
        在项目中出现了org.hiber</div>
                                </li>
                                <li><a href="/article/493.htm"
                                       title="android动画效果" target="_blank">android动画效果</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/android%E5%8A%A8%E7%94%BB/1.htm">android动画</a>
                                    <div>前几天弄alertdialog和popupwindow的时候,用到了android的动画效果,今天专门研究了一下关于android的动画效果,列出来,方便以后使用。 
 
Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。 
第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。 
 
</div>
                                </li>
                                <li><a href="/article/620.htm"
                                       title="js delete 删除机理以及它的内存泄露问题的解决方案" target="_blank">js delete 删除机理以及它的内存泄露问题的解决方案</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>delete删除属性时只是解除了属性与对象的绑定,故当属性值为一个对象时,删除时会造成内存泄露  (其实还未删除) 
举例: 

var person={name:{firstname:'bob'}}
var p=person.name
delete person.name
p.firstname  -->'bob'
// 依然可以访问p.firstname,存在内存泄露</div>
                                </li>
                                <li><a href="/article/747.htm"
                                       title="Oracle将零干预分析加入网络即服务计划" target="_blank">Oracle将零干预分析加入网络即服务计划</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>由Oracle通信技术部门主导的演示项目并没有在本月较早前法国南斯举行的行业集团TM论坛大会中获得嘉奖。但是,Oracle通信官员解雇致力于打造一个支持零干预分配和编制功能的网络即服务(NaaS)平台,帮助企业以更灵活和更适合云的方式实现通信服务提供商(CSP)的连接产品。这个Oracle主导的项目属于TM Forum Live!活动上展示的Catalyst计划的19个项目之一。Catalyst计</div>
                                </li>
                                <li><a href="/article/874.htm"
                                       title="spring学习——springmvc(二)" target="_blank">spring学习——springmvc(二)</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>Spring MVC提供了非常方便的文件上传功能。 
1,配置Spring支持文件上传: 
DispatcherServlet本身并不知道如何处理multipart的表单数据,需要一个multipart解析器把POST请求的multipart数据中抽取出来,这样DispatcherServlet就能将其传递给我们的控制器了。为了在Spring中注册multipart解析器,需要声明一个实现了Mul</div>
                                </li>
                                <li><a href="/article/1001.htm"
                                       title="POJ-2828-Buy Tickets" target="_blank">POJ-2828-Buy Tickets</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/ACM_POJ/1.htm">ACM_POJ</a>
                                    <div>POJ-2828-Buy Tickets 
http://poj.org/problem?id=2828 
线段树,逆序插入 
 
#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;#define N 200010struct</div>
                                </li>
                                <li><a href="/article/1128.htm"
                                       title="Java Ant build.xml详解" target="_blank">Java Ant build.xml详解</a>
                                    <span class="text-muted">asia007</span>
<a class="tag" taget="_blank" href="/search/build.xml/1.htm">build.xml</a>
                                    <div>1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台   --因为ant是使用java实现的,所以它跨平台使用简单--与ant的兄弟make比起来语法清晰--同样是和make相比功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有</div>
                                </li>
                                <li><a href="/article/1255.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/xml%E9%85%8D%E7%BD%AE/1.htm">xml配置</a><a class="tag" taget="_blank" href="/search/%E7%9B%91%E5%90%AC%E5%99%A8/1.htm">监听器</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E7%8E%B0%E6%8E%A5%E5%8F%A3/1.htm">实现接口</a>
                                    <div>android开发中经常会用到各种各样的监听器,android监听器的写法与java又有不同的地方;  
  
1,activity中使用内部类实现接口 ,创建内部类实例  使用add方法  与java类似 
  
创建监听器的实例 
myLis lis = new myLis(); 
  
使用add方法给按钮添加监听器 
 </div>
                                </li>
                                <li><a href="/article/1382.htm"
                                       title="软件架构师不等同于资深程序员" target="_blank">软件架构师不等同于资深程序员</a>
                                    <span class="text-muted">bijian1013</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/%E6%9E%B6%E6%9E%84%E5%B8%88/1.htm">架构师</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a>
                                    <div>        本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho等。 
        如今很多的公司</div>
                                </li>
                                <li><a href="/article/1509.htm"
                                       title="TeamForge Wiki Syntax & CollabNet User Information Center" target="_blank">TeamForge Wiki Syntax & CollabNet User Information Center</a>
                                    <span class="text-muted">sunjing</span>
<a class="tag" taget="_blank" href="/search/TeamForge/1.htm">TeamForge</a><a class="tag" taget="_blank" href="/search/How+do/1.htm">How do</a><a class="tag" taget="_blank" href="/search/Attachement/1.htm">Attachement</a><a class="tag" taget="_blank" href="/search/Anchor/1.htm">Anchor</a><a class="tag" taget="_blank" href="/search/Wiki+Syntax/1.htm">Wiki Syntax</a>
                                    <div>the CollabNet user information center http://help.collab.net/ 
  
How do I create a new Wiki page? 
A CollabNet TeamForge project can have any number of Wiki pages. All Wiki pages are linked, and</div>
                                </li>
                                <li><a href="/article/1636.htm"
                                       title="【Redis四】Redis数据类型" target="_blank">【Redis四】Redis数据类型</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>概述 
Redis是一个高性能的数据结构服务器,称之为数据结构服务器的原因是,它提供了丰富的数据类型以满足不同的应用场景,本文对Redis的数据类型以及对这些类型可能的操作进行总结。 
Redis常用的数据类型包括string、set、list、hash以及sorted set.Redis本身是K/V系统,这里的数据类型指的是value的类型,而不是key的类型,key的类型只有一种即string</div>
                                </li>
                                <li><a href="/article/1763.htm"
                                       title="SSH2整合-附源码" target="_blank">SSH2整合-附源码</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a>
                                    <div>今天用eclipse终于整合出了struts2+hibernate+spring框架。 
我创建的是tomcat项目,需要有tomcat插件。导入项目以后,鼠标右键选择属性,然后再找到“tomcat”项,勾选一下“Is a tomcat project”即可。具体方法见源码里的jsp图片,sql也在源码里。 
  
  
补充1:项目中部分jar包不是最新版的,可能导</div>
                                </li>
                                <li><a href="/article/1890.htm"
                                       title="[转]开源项目代码的学习方法" target="_blank">[转]开源项目代码的学习方法</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a>
                                    <div>转自: 
http://blog.sina.com.cn/s/blog_693458530100lk5m.html 
http://www.cnblogs.com/west-link/archive/2011/06/07/2074466.html 
  
1)阅读features。以此来搞清楚该项目有哪些特性2)思考。想想如果自己来做有这些features的项目该如何构架3)下载并安装d</div>
                                </li>
                                <li><a href="/article/2017.htm"
                                       title="编程之美-子数组的最大和(二维)" target="_blank">编程之美-子数组的最大和(二维)</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>package beautyOfCoding;

import java.util.Arrays;
import java.util.Random;

public class MaxSubArraySum2 {

	/**
	 * 编程之美 子数组之和的最大值(二维)
	 */
	private static final int ROW = 5;
	private stat</div>
                                </li>
                                <li><a href="/article/2144.htm"
                                       title="读书笔记-3" target="_blank">读书笔记-3</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/jquery%E7%AC%94%E8%AE%B0/1.htm">jquery笔记</a><a class="tag" taget="_blank" href="/search/resultMap%E9%85%8D%E7%BD%AE/1.htm">resultMap配置</a><a class="tag" taget="_blank" href="/search/ibatis%E4%B8%80%E5%AF%B9%E5%A4%9A%E9%85%8D%E7%BD%AE/1.htm">ibatis一对多配置</a>
                                    <div>1、resultMap配置 
2、ibatis一对多配置 
3、jquery笔记 
 
1、resultMap配置
当<select resultMap="topic_data">
<resultMap id="topic_data">必须一一对应。
(1)<resultMap class="tblTopic&q</div>
                                </li>
                                <li><a href="/article/2271.htm"
                                       title="[物理与天文]物理学新进展" target="_blank">[物理与天文]物理学新进展</a>
                                    <span class="text-muted">comsci</span>

                                    <div> 
 
      如果我们必须获得某种地球上没有的矿石,才能够进行某些能量输出装置的设计和建造,而要获得这种矿石,又必须首先进行深空探测,而要进行深空探测,又必须获得这种能量输出装置,这个矛盾的循环,会导致地球联盟在与宇宙文明建立关系的时候,陷入困境 
 
      怎么办呢? 
 
 </div>
                                </li>
                                <li><a href="/article/2398.htm"
                                       title="Oracle 11g新特性:Automatic Diagnostic Repository" target="_blank">Oracle 11g新特性:Automatic Diagnostic Repository</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/ADR/1.htm">ADR</a>
                                    <div>Oracle Database 11g的FDI(Fault Diagnosability Infrastructure)是自动化诊断方面的又一增强。 
FDI的一个关键组件是自动诊断库(Automatic Diagnostic Repository-ADR)。 
 
在oracle 11g中,alert文件的信息是以xml的文件格式存在的,另外提供了普通文本格式的alert文件。 
这两份log文</div>
                                </li>
                                <li><a href="/article/2525.htm"
                                       title="简单排序:选择排序" target="_blank">简单排序:选择排序</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F/1.htm">选择排序</a>
                                    <div>
    public void selectSort(int[] array){
        int select;
        
        for(int i=0;i<array.length;i++){
            select = i;
            
            for(int k=i+1;k<array.leng</div>
                                </li>
                                <li><a href="/article/2652.htm"
                                       title="C语言学习六指针的经典程序,互换两个数字" target="_blank">C语言学习六指针的经典程序,互换两个数字</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>示例程序,swap_1和swap_2都是错误的,推理从1开始推到2,2没完成,推到3就完成了 
# include <stdio.h>

void swap_1(int, int);
void swap_2(int *, int *);
void swap_3(int *, int *);

int main(void)
{
	int a = 3;
	int b = </div>
                                </li>
                                <li><a href="/article/2779.htm"
                                       title="php 5.4中php-fpm 的重启、终止操作命令" target="_blank">php 5.4中php-fpm 的重启、终止操作命令</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>php 5.4中php-fpm 的重启、终止操作命令: 
查看php运行目录命令:which php/usr/bin/php 
查看php-fpm进程数:ps aux | grep -c php-fpm 
查看运行内存/usr/bin/php  -i|grep mem 
重启php-fpm/etc/init.d/php-fpm restart 
在phpinfo()输出内容可以看到php</div>
                                </li>
                                <li><a href="/article/2906.htm"
                                       title="线程同步工具类" target="_blank">线程同步工具类</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8C%E6%AD%A5%E5%B7%A5%E5%85%B7%E7%B1%BB/1.htm">同步工具类</a>
                                    <div>同步工具类包括信号量(Semaphore)、栅栏(barrier)、闭锁(CountDownLatch) 
  
闭锁(CountDownLatch) 
public class RunMain {
	public long timeTasks(int nThreads, final Runnable task) throws InterruptedException {
		fin</div>
                                </li>
                                <li><a href="/article/3033.htm"
                                       title="bleeding edge是什么意思" target="_blank">bleeding edge是什么意思</a>
                                    <span class="text-muted">haojinghua</span>
<a class="tag" taget="_blank" href="/search/DI/1.htm">DI</a>
                                    <div>不止一次,看到很多讲技术的文章里面出现过这个词语。今天终于弄懂了——通过朋友给的浏览软件,上了wiki。  
我再一次感到,没有辞典能像WiKi一样,给出这样体贴人心、一清二楚的解释了。为了表达我对WiKi的喜爱,只好在此一一中英对照,给大家上次课。 
  
In computer science, bleeding edge is a term that </div>
                                </li>
                                <li><a href="/article/3160.htm"
                                       title="c中实现utf8和gbk的互转" target="_blank">c中实现utf8和gbk的互转</a>
                                    <span class="text-muted">jimmee</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/iconv/1.htm">iconv</a><a class="tag" taget="_blank" href="/search/utf8%26gbk%E7%BC%96%E7%A0%81/1.htm">utf8&gbk编码</a>
                                    <div>#include <iconv.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/stat.h>

int code_c</div>
                                </li>
                                <li><a href="/article/3287.htm"
                                       title="大型分布式网站架构设计与实践" target="_blank">大型分布式网站架构设计与实践</a>
                                    <span class="text-muted">lilin530</span>
<a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a>
                                    <div>1.大型网站软件系统的特点? 
a.高并发,大流量。 
b.高可用。 
c.海量数据。 
d.用户分布广泛,网络情况复杂。 
e.安全环境恶劣。 
f.需求快速变更,发布频繁。 
g.渐进式发展。 
 
2.大型网站架构演化发展历程? 
a.初始阶段的网站架构。 
应用程序,数据库,文件等所有的资源都在一台服务器上。 
b.应用服务器和数据服务器分离。 
c.使用缓存改善网站性能。 
d.使用应用</div>
                                </li>
                                <li><a href="/article/3414.htm"
                                       title="在代码中获取Android theme中的attr属性值" target="_blank">在代码中获取Android theme中的attr属性值</a>
                                    <span class="text-muted">OliveExcel</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/theme/1.htm">theme</a>
                                    <div>Android的Theme是由各种attr组合而成, 每个attr对应了这个属性的一个引用, 这个引用又可以是各种东西. 
  
在某些情况下, 我们需要获取非自定义的主题下某个属性的内容 (比如拿到系统默认的配色colorAccent), 操作方式举例一则: 
int defaultColor = 0xFF000000;
int[] attrsArray = { andorid.r.</div>
                                </li>
                                <li><a href="/article/3541.htm"
                                       title="基于Zookeeper的分布式共享锁" target="_blank">基于Zookeeper的分布式共享锁</a>
                                    <span class="text-muted">roadrunners</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</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/%E5%85%B1%E4%BA%AB%E9%94%81/1.htm">共享锁</a>
                                    <div>首先,说说我们的场景,订单服务是做成集群的,当两个以上结点同时收到一个相同订单的创建指令,这时并发就产生了,系统就会重复创建订单。等等......场景。这时,分布式共享锁就闪亮登场了。 
  
共享锁在同一个进程中是很容易实现的,但在跨进程或者在不同Server之间就不好实现了。Zookeeper就很容易实现。具体的实现原理官网和其它网站也有翻译,这里就不在赘述了。 
  
官</div>
                                </li>
                                <li><a href="/article/3668.htm"
                                       title="两个容易被忽略的MySQL知识" target="_blank">两个容易被忽略的MySQL知识</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>1、varchar(5)可以存储多少个汉字,多少个字母数字?     相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有可能对上面的问题做出错误的回答。     这个问题我查了好多资料,有的人说是可以存储5个字符,2.5个汉字(每个汉字占用两个字节的话),有的人说这个要区分版本,5.0</div>
                                </li>
                                <li><a href="/article/3795.htm"
                                       title="zoj 3827 Information Entropy(水题)" target="_blank">zoj 3827 Information Entropy(水题)</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/format/1.htm">format</a>
                                    <div> 题目链接:zoj 3827 Information Entropy 
 题目大意:三种底,计算和。 
 解题思路:调用库函数就可以直接算了,不过要注意Pi = 0的时候,不过它题目里居然也讲了。。。limp→0+plogb(p)=0,因为p是logp的高阶。 
#include <cstdio>
#include <cstring>
#include <cmath&</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>