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/1891974566327152640.htm"
                           title="Python网络爬虫-WebSocket数据抓取" target="_blank">Python网络爬虫-WebSocket数据抓取</a>
                        <span class="text-muted">程序小勇</span>
<a class="tag" taget="_blank" href="/search/faiss/1.htm">faiss</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%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</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、WebSocket请求的分析通常涉及以下几个方面:2、利用WebSocket爬取数据总结最后,创作不易!非常感谢大家的关注、点赞、评论啦!谢谢三连哦!好人好运连连,学习进步!工作顺利哦!博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,</div>
                    </li>
                    <li><a href="/article/1891930292613083136.htm"
                           title="流行编程语言全解析:优势、应用与短板" target="_blank">流行编程语言全解析:优势、应用与短板</a>
                        <span class="text-muted">a小胡哦</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/swift/1.htm">swift</a><a class="tag" taget="_blank" href="/search/r%E8%AF%AD%E8%A8%80/1.htm">r语言</a>
                        <div>Python:优势Python以其简洁、易读的语法闻名,新手能快速上手。丰富的库和框架,能极大地提高开发效率。适用领域数据科学与分析:处理和分析大规模数据集,进行数据可视化。典型示例:Google用Python进行数据分析,处理海量数据以支持各种业务决策。机器学习与人工智能:构建和训练模型。典型示例:OpenAI在很多人工智能项目中广泛使用Python,如GPT系列模型的研发。网络爬虫:轻松从网页</div>
                    </li>
                    <li><a href="/article/1891903033600700416.htm"
                           title="052_爬虫_爬虫相关概念(引用《尚硅谷Python爬虫教程(小)小 白零基础速通》052章)" target="_blank">052_爬虫_爬虫相关概念(引用《尚硅谷Python爬虫教程(小)小 白零基础速通》052章)</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>爬虫解释:通过程序,根据url(http://taobao.com)进行网页的爬取获取有用的信息实用程序模拟浏览器,去向服务发送请求,获取响应信息爬虫的核心爬取网页:爬取整个网页包含了网页中所的内容解析数据:将网页中得到的数据进行解析难点:爬虫和但爬虫之间的博弈爬虫的类型实例通用爬虫百度,360,Google,搜狗等搜索引擎功能访问网页-》抓取数据-》数据储存-》数据处理-》提供检索服务robot</div>
                    </li>
                    <li><a href="/article/1891899750693793792.htm"
                           title="尚硅谷爬虫note007" target="_blank">尚硅谷爬虫note007</a>
                        <span class="text-muted">CSDNy666999</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>一、urllib—异常1.urllib.error.HTTPError2.urllib.error.URLError#_*_coding:utf-8_*_#@Time:2025/2/1411:33#@Author:20250206-里奥#@File:demo26_异常#@Project:PythonProject10-14importurllib.requestimporturllib.error</div>
                    </li>
                    <li><a href="/article/1891820495158964224.htm"
                           title="【Python爬虫(15)】从0到1:Python爬虫实战攻克电商网站动态数据堡垒" target="_blank">【Python爬虫(15)】从0到1:Python爬虫实战攻克电商网站动态数据堡垒</a>
                        <span class="text-muted">奔跑吧邓邓子</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/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/%E7%94%B5%E5%95%86%E7%BD%91%E7%AB%99/1.htm">电商网站</a><a class="tag" taget="_blank" href="/search/%E5%8A%A8%E6%80%81%E6%95%B0%E6%8D%AE/1.htm">动态数据</a>
                        <div>【Python爬虫】专栏简介:本专栏是Python爬虫领域的集大成之作,共100章节。从Python基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。目录一、引言二、准备工作2.1环境搭建2.2目标电商网站分析三、攻克登</div>
                    </li>
                    <li><a href="/article/1891814682365325312.htm"
                           title="字节跳动后端或大数据基础知识面试题及参考答案(2万字长文)" target="_blank">字节跳动后端或大数据基础知识面试题及参考答案(2万字长文)</a>
                        <span class="text-muted">大模型大数据攻城狮</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%8E%82%E9%9D%A2%E8%AF%95/1.htm">大厂面试</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a>
                        <div>目录Redis的数据类型Redis数据类型的底层数据结构三次握手、四次挥手Redis持久化机制购物车为什么用Redis存,是永久存储吗MySQL的InnoDB索引数据结构哪些SQL的关键字会让索引失效队列、栈、数组、链表有什么不同讲讲爬虫的构成爬虫抓到的数据不清洗吗?不去重吗?对爬虫的更多了解Linux进程间通信机制进程和线程的区别线程私有的数据讲一下堆排序,每次调整的时间复杂度?堆排序是稳定的吗</div>
                    </li>
                    <li><a href="/article/1891760265066770432.htm"
                           title="爬虫快速上手之正则表达式总结" target="_blank">爬虫快速上手之正则表达式总结</a>
                        <span class="text-muted">Athena945</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%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>目录一、正则表达式二、查找相关方法三、re.Match类的使用四、re.compile()方法的使用五、正则修饰符六、标点符号的特殊意义七、字母的特殊含义八、正则替换九、贪婪模式和非贪婪模式十、正则表达式小结一、正则表达式1、概念正则表达式是一个特殊的字符序列,通常被用来检索、替换那些符合某个模式(规则)的文本;在python中需要通过正则表达式对字符串进行匹配的时候,可以使用re模块实现全部的正</div>
                    </li>
                    <li><a href="/article/1891734789824770048.htm"
                           title="Go分布式爬虫笔记(五)_golang分布式爬虫架构" target="_blank">Go分布式爬虫笔记(五)_golang分布式爬虫架构</a>
                        <span class="text-muted">2401_87198107</span>
<a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>系统级别优化与架构设计:如何对服务进行拆分如何将服务链接在一起服务调用的关系以及调用频率各种问题:如何让服务随着负载的增加具有可扩展性?是否采用DDD的架构设计?如何进行分布式的协调?选择何种中间件、缓存数据库与存储数据库?使用何种通信方式?如何设计缓存与数据库的关系,才能避免缓存失效之后大量数据直接打到数据库导致的服务响应变慢甚至服务雪崩的问题呢?分布式系统中数据的一致性,如果业务能够接受读取到</div>
                    </li>
                    <li><a href="/article/1891722043909533696.htm"
                           title="这知识点真细,Python获取HTTP响应头和响应体" target="_blank">这知识点真细,Python获取HTTP响应头和响应体</a>
                        <span class="text-muted">梦想橡皮擦</span>
<a class="tag" taget="_blank" href="/search/Python%E7%88%AC%E8%99%AB120/1.htm">Python爬虫120</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8%E5%B7%A5%E5%85%B7/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/python%E7%88%AC%E8%99%AB/1.htm">python爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%80%85%E5%B7%A5%E5%85%B7/1.htm">开发者工具</a>
                        <div>哈喽!大家好,我是【梦想橡皮擦】,10年产研经验,致力于Python相关技术栈传播本文如果觉得不错,动动小手点个赞赞吧本文如果发现错误,欢迎在评论区中指正哦技术博客日更者,我喜欢写文章,如果任意一篇文章对你有帮助,就挺好的~欢迎大家订阅专栏⭐️⭐️《Python爬虫120》⭐️⭐️最近更新:2022年3月23日,橡皮擦的第610篇原创博客文章目录⛳️实战案例场景⛳️可获取的响应头⛳️实战案例场景这</div>
                    </li>
                    <li><a href="/article/1891707902046040064.htm"
                           title="python aiohttp_Python-异步之aiohttp" target="_blank">python aiohttp_Python-异步之aiohttp</a>
                        <span class="text-muted">weixin_39864101</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/aiohttp/1.htm">aiohttp</a>
                        <div>什么是aiohttp?一个异步的HTTP客户端\服务端框架,基于asyncio的异步模块。可用于实现异步爬虫,更快于requests的同步爬虫。aiohttp和requestsrequests版爬虫requests同步方式连续30次简单爬取http://httpbin.org网站importrequestsfromdatetimeimportdatetimedeffetch(url):r=requ</div>
                    </li>
                    <li><a href="/article/1891582330024292352.htm"
                           title="运用python制作一个完整的股票分析系统" target="_blank">运用python制作一个完整的股票分析系统</a>
                        <span class="text-muted">大懒猫软件</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/beautifulsoup/1.htm">beautifulsoup</a>
                        <div>使用python制作一个股票分析系统,可以通过股票价格走势动态界面,实时动态监测不同类型股票的变化情况。以下是一个完整的股票分析系统开发指南,包括股票价格走势动态界面和实时监测功能。这个系统将结合网络爬虫、数据分析、机器学习和可视化技术,帮助你实时监测不同类型股票的变化情况。1.系统功能概述数据采集:使用网络爬虫技术从财经网站采集股票数据。数据处理:计算技术指标(如KDJ、BOLL)并进行数据预处</div>
                    </li>
                    <li><a href="/article/1891578927214817280.htm"
                           title="使用 Python 爬虫和 FFmpeg 爬取 B 站高清视频" target="_blank">使用 Python 爬虫和 FFmpeg 爬取 B 站高清视频</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/ffmpeg/1.htm">ffmpeg</a>
                        <div>以下是一个完整的Python爬虫代码示例,用于爬取B站视频并使用FFmpeg合成高清视频。1.准备工作确保安装了以下Python库和工具:bash复制pipinstallrequestsmoviepy2.爬取视频和音频文件B站的视频和音频文件通常是分开存储的,需要分别下载视频和音频文件,然后使用FFmpeg合成。Python复制importrequestsfrommoviepy.editorimp</div>
                    </li>
                    <li><a href="/article/1891574136136855552.htm"
                           title="python爬虫模拟点击和输入,python爬虫实战--selenium模拟登录并自动点击" target="_blank">python爬虫模拟点击和输入,python爬虫实战--selenium模拟登录并自动点击</a>
                        <span class="text-muted">半夜梳长长的头发</span>
<a class="tag" taget="_blank" href="/search/python%E7%88%AC%E8%99%AB%E6%A8%A1%E6%8B%9F%E7%82%B9%E5%87%BB%E5%92%8C%E8%BE%93%E5%85%A5/1.htm">python爬虫模拟点击和输入</a>
                        <div>爬虫实战项目。爬虫利器:selenium的使用。任务介绍最近刚刚注册了某个网站:HDHome,该站有新手考核任务,其中有一项是需要达到魔力值5000。在魔力值获取方式中,我们看到这一项:“说谢谢=0.5个魔力值”,而网站存活种子数量达到16000+,也就意味着对每个种子说一下谢谢,轻松达到8000+的魔力值,于是,这个项目应运而生。实现思路:获取种子的页面,在每个页面中找到说谢谢的按钮,并点击后,</div>
                    </li>
                    <li><a href="/article/1891570599508111360.htm"
                           title="爬虫实践——selenium、bs4" target="_blank">爬虫实践——selenium、bs4</a>
                        <span class="text-muted">lucky_chaichai</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/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/requests/1.htm">requests</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><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>目录一、浏览器的一般设置二、打开网页并获取网页源码的方式1、基于requests库2、基于urlib库3、基于selenium三、HTML解析1、BeautifulSoup2、Selenium动态渲染爬虫:模拟动态操作网页,加载JS(webdriver)3、scrapy框架四、反爬虫操作五、一些常见的异常处理六、url接口调用问题——get、post操作1、get请求2、post请求fromsel</div>
                    </li>
                    <li><a href="/article/1891512527884447744.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>提升爬虫获取数据的准确性是确保数据分析和后续应用有效性的关键。以下是一些经过验证的方法和最佳实践,可以帮助提高爬虫数据的准确性:1.数据清洗数据清洗是提升数据准确性的重要步骤,主要包括去除重复数据、处理缺失值和异常值。去除重复数据:重复数据会影响分析结果的准确性,可以通过pandas库的drop_duplicates()方法删除重复数据。importpandasaspddf=pd.DataFram</div>
                    </li>
                    <li><a href="/article/1891492209904119808.htm"
                           title="PHP爬虫:获取直播间弹幕数据实战指南" target="_blank">PHP爬虫:获取直播间弹幕数据实战指南</a>
                        <span class="text-muted">Jason-河山</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</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>在数字化时代,直播间弹幕作为观众与主播互动的重要方式,其数据的获取与分析对于理解观众行为、优化直播内容具有重要意义。然而,由于技术限制和法律合规性要求,直接获取直播间弹幕数据并非易事。本文将介绍如何使用PHP爬虫技术,合法合规地获取直播间弹幕API返回值,并进行实战分析。1.环境准备与法律合规性在开始之前,确保您的开发环境中已安装PHP和必要的cURL扩展。同时,必须确保您的爬虫行为遵守相关法律法</div>
                    </li>
                    <li><a href="/article/1891439341759164416.htm"
                           title="豆瓣电影TOP250爬虫项目" target="_blank">豆瓣电影TOP250爬虫项目</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/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>以下是一个基于Python的豆瓣电影TOP250爬虫项目案例,包含完整的技术原理说明、关键知识点解析和项目源代码。本案例采用面向对象编程思想,涵盖反爬机制处理、数据解析和存储等核心内容。豆瓣电影TOP250爬虫项目一、项目需求分析目标网站:https://movie.douban.com/top250爬取内容:电影名称导演和主演信息上映年份制片国家电影类型评分评价人数短评金句技术挑战:请求头验证分</div>
                    </li>
                    <li><a href="/article/1891432656575459328.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/php/1.htm">php</a>
                        <div>在Python中,异常处理通常使用try-except语句块来实现。你可以捕获特定的异常类型,也可以捕获通用异常。1.捕获特定异常针对常见的网络请求异常和解析异常,可以捕获具体的异常类型,例如requests.exceptions.RequestException、AttributeError等。示例代码:importrequestsfrombs4importBeautifulSoupdeffet</div>
                    </li>
                    <li><a href="/article/1891432657292685312.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>1.使用BeautifulSoup解析HTML如果商品描述是通过HTML页面获取的,可以使用BeautifulSoup库来解析HTML内容。示例代码:importrequestsfrombs4importBeautifulSoupdefget_product_description(url):headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win6</div>
                    </li>
                    <li><a href="/article/1891432404556509184.htm"
                           title="Python爬虫:如何优雅地“偷窥”商品详情" target="_blank">Python爬虫:如何优雅地“偷窥”商品详情</a>
                        <span class="text-muted">数据小爬虫@</span>
<a class="tag" taget="_blank" href="/search/API/1.htm">API</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爬虫来“偷窥”商品详情。别担心,我们保证一切都是合法合规的,就像在百货商场里试穿衣服一样,只是看看,不买账。一、爬虫的“伪装术”在开始我们的“偷窥”之旅前,我们需要给我们的爬虫穿上一件“隐身衣”。这是因为许多网站都有反爬虫机制,比如检查你的Us</div>
                    </li>
                    <li><a href="/article/1891430131906441216.htm"
                           title="分享一些处理复杂HTML结构的经验" target="_blank">分享一些处理复杂HTML结构的经验</a>
                        <span class="text-muted">数据小爬虫@</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>在处理复杂HTML结构时,尤其是使用Java爬虫和Jsoup进行数据抓取时,以下是一些实用的经验和技巧,可以帮助你更高效地解析和提取数据:1.缩小解析范围对于复杂的HTML结构,尽量缩小解析范围,只解析所需的元素。使用CSS选择器来定位所需的元素,而不是对整个文档进行解析。2.使用Jsoup的选择器功能Jsoup提供了强大的选择器功能,可以用来处理嵌套的DOM元素。例如,你可以使用select方法</div>
                    </li>
                    <li><a href="/article/1891388754644496384.htm"
                           title="关于网页自动化工具DrissionPage进行爬虫的使用方法" target="_blank">关于网页自动化工具DrissionPage进行爬虫的使用方法</a>
                        <span class="text-muted">web15117360223</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/%E8%87%AA%E5%8A%A8%E5%8C%96/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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>目录一.简介二.使用1.安装方式2.基本用法3.模式4.元素交互4.SessionPage5.运行JS6.结语一.简介最近在学python的过程中,发现了一个好用的爬虫库DrissionPage——一个基于python的网页自动化工具。据具官方文档(官方网址:https://drissionpage.cn/)介绍:它既能控制浏览器,也能收发数据包,还能把两者合而为一。可兼顾浏览器自动化的便利性和r</div>
                    </li>
                    <li><a href="/article/1891374245611630592.htm"
                           title="使用Python构建论坛爬虫:抓取论坛主题、标签和讨论量" target="_blank">使用Python构建论坛爬虫:抓取论坛主题、标签和讨论量</a>
                        <span class="text-muted">Python爬虫项目</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/%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/%E9%87%91%E8%9E%8D/1.htm">金融</a>
                        <div>引言随着互联网的发展,论坛作为一个信息交流的地方,承载了大量的讨论内容、主题和标签。通过抓取论坛的数据,用户可以了解最热的话题、讨论量大的主题以及与特定标签相关的内容。本篇博客将介绍如何使用Python构建一个论坛数据抓取爬虫,从论坛网站上抓取主题、标签和讨论量,并对数据进行存储和分析。目标与背景我们的目标是从多个论坛网站抓取以下内容:论坛主题:讨论的主要内容或话题。标签:与主题相关的分类信息。讨</div>
                    </li>
                    <li><a href="/article/1891368690880933888.htm"
                           title="Python学习教程:必须掌握的Cookie知识点都在这里了" target="_blank">Python学习教程:必须掌握的Cookie知识点都在这里了</a>
                        <span class="text-muted">weixin_30387339</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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/ViewUI/1.htm">ViewUI</a>
                        <div>今天我们来全面了解一下Cookie(小饼干)相关的知识!篇幅有点长,在学习Python的伙伴或者有兴趣的你,可以耐心看哦!相信很多同学肯定听过Cookie这个东西,也大概了解其作用,但是其原理以及如何设置,可能没有做过web的同学并不是非常清楚,以前的Python学习教程中其实有跟大家提到过,那今天就带大家详细了解下Cookie相关的知识!一、诞生背景爬虫系列教程的第一篇:HTTP详解中我们便说过</div>
                    </li>
                    <li><a href="/article/1891238038160338944.htm"
                           title="Python 爬虫验证码识别" target="_blank">Python 爬虫验证码识别</a>
                        <span class="text-muted">acheding</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/ocr/1.htm">ocr</a>
                        <div>在我们进行爬虫的过程中,经常会碰到有些网站会时不时弹出来验证码识别。我们该如何解决呢?这里分享2种我尝试过的方法。0.验证码示例1.OpenCV+pytesseract使用Python中的OpenCV库进行图像预处理(边缘保留滤波、灰度化、二值化、形态学操作和逻辑运算),然后结合pytesseract进行文字识别。pytesseract需要配合安装在本地的tesseract-ocr.exe文件一起</div>
                    </li>
                    <li><a href="/article/1891236651636682752.htm"
                           title="Python爬取小说保存为Excel" target="_blank">Python爬取小说保存为Excel</a>
                        <span class="text-muted">不知所云975</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>本代码以实际案例介绍,爬取‘笔趣阁最新小说‘列表保存为表格文件。类封装以及网络爬虫以及openpyxl模块可以参考学习。#更新小说目录importrequestsfromlxmlimportetreeimportopenpyxlfromopenpyxl.stylesimportFont,Alignment,Side,Border,PatternFill#定义下载表格的类classDown_exce</div>
                    </li>
                    <li><a href="/article/1891235768530169856.htm"
                           title="python 爬取图片并保存到excel_python制作爬虫并将抓取结果保存到excel中" target="_blank">python 爬取图片并保存到excel_python制作爬虫并将抓取结果保存到excel中</a>
                        <span class="text-muted">weixin_39778582</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E5%8F%96%E5%9B%BE%E7%89%87%E5%B9%B6%E4%BF%9D%E5%AD%98%E5%88%B0excel/1.htm">爬取图片并保存到excel</a>
                        <div>学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫。第一步:分析网站的请求过程我们在查看拉勾网上的招聘信息的时候,搜索Python,或者是PHP等等的岗位信息,其实是向服务器发出相应请求,由服务器动态的响应请求,将我们所需要的内容通过浏览器解析,呈现在我们的面前。可以看到我们发出的请求当中,FormData中的kd</div>
                    </li>
                    <li><a href="/article/1891226558614532096.htm"
                           title="来看看爬虫合不合法" target="_blank">来看看爬虫合不合法</a>
                        <span class="text-muted">度假的小鱼</span>
<a class="tag" taget="_blank" href="/search/Python%E5%9F%BA%E7%A1%80/1.htm">Python基础</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>活动地址:CSDN21天学习挑战赛文章目录一、爬虫合不合法二、什么是爬虫三、爬虫的分类四、为什么学网络爬虫一、爬虫合不合法随着Python在最近几年的流行,Python中的爬虫也逐渐进入到大家的视野中,但是很多小伙伴,还是在担心爬虫的合法性。今天就来和大家一起讨论一下爬虫的合法性。大家可能在网上看到很多有关程序员写爬虫被抓这样的新闻只因写了一段爬虫,公司200多人被抓!爬虫的本身是合法的,但是如何</div>
                    </li>
                    <li><a href="/article/1891221639664824320.htm"
                           title="《爬虫写得好,铁窗关到老,做了5年Python" target="_blank">《爬虫写得好,铁窗关到老,做了5年Python</a>
                        <span class="text-muted">code高级开源</span>
<a class="tag" taget="_blank" href="/search/2024%E5%B9%B4%E7%A8%8B%E5%BA%8F%E5%91%98%E5%AD%A6%E4%B9%A0/1.htm">2024年程序员学习</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>**我的使命与愿景:**持续稳定输出,赋能中国技术社区蓬勃发展!最近的IT公司违法案件越来越多,看了很多因为爬虫,数字货币,博彩网站外包等被抓的事情,给大家提个醒,打工注意不能违法,写代码背后也有法律风险。一、什么是爬虫?通过爬虫代码,下载互联网上的数据到本地,并且提取出我们需要的信息的过程。二、典型违法案例典型案例(一):构成非法获取计算机信息系统数据罪张某等非法获取计算机信息系统数据案(上海市</div>
                    </li>
                    <li><a href="/article/1891184700144283648.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/%E5%AA%92%E4%BD%93/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>
                        <div>社交媒体平台是全球信息交流的重要渠道,成千上万的文章、评论和动态每天都在各大平台上发布。这些数据包含了丰富的用户行为、意见和情感分析的潜力,因此抓取社交媒体平台上的文章内容与评论已成为数据分析、市场研究和情感分析等领域的重要任务。本篇教程将为大家详细介绍如何使用Python编写爬虫,抓取社交媒体平台(如微博、Twitter、Facebook等)的文章内容和评论。我们将涵盖如何使用现代爬虫技术,包括</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>