无聊日常--python+selenium+chromedriver 实现QQ空间评论自动删除

博客内容用于技术交流学习,读者通过学习本博客内容后进行的任何违法违规操作与本人无关,特此声明。

我最初有写这个项目的想法是在18年11月底(好像是),当时我们学校的表白墙遭到了麦片的账号骚扰——不断在评论区刷麦片评论,利用表白墙的流量“拉客”。
“路见不平一声吼啊~”(破音)
但是当时学习任务紧没有太多时间,因此搁置了很久。最初是想用splash实现,但是程序有BUG,一直没有按预期运行,拖着拖着就到了现在。当然,写这篇博客也是写出来一周后了。
废话少说,我来讲讲我这个项目完成思路吧,涉及到垃圾语句的地方轻喷。(虽然在csdn评论的人还是比较少的)

对了,结论放这里。程序稳定性不好,主要因为加载说说的程序会因为网速等原因在一定时间内获取一定数量说说,而进行后一步删除操作时,若又有新的说说加载出来,则会造成操作失败。
之后通过进一步学习以后我再来优化一下吧~

1、环境:python3.7+selenium+chromdriver+chrome 72

chromdriver具体版本我忘了,但找到篇博客,里面有版本对应:
https://blog.csdn.net/yoyocat915/article/details/80580066
chromedriver下载地址:http://npm.taobao.org/mirrors/chromedriver/

2、程序思路:

登录QQ空间 —— 抓取评论 —— 判断是否存在匹配评论 —— 若存在,找到一条删除后重新进入判断循环(删除一条评论以后,网站元素的一系列信息就变化了,此时继续删除其他匹配评论就失去了意义会报错。) —— 一定时间结束循环等待下次执行

类定义以及声明的一些全局变量:

from selenium import webdriver
from selenium.common.exceptions import *
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import  *
import time
import re
from selenium.webdriver.support.wait import WebDriverWait
# 全局变量初始化
url = "https://xui.ptlogin2.qq.com/cgi-bin/xlogin?proxy_url=https%3A//qzs.qq.com/qzone/v6/portal/proxy.html&daid=5&&hide_title_bar=1&low_login=0&qlogin_auto_login=1&no_verifyimg=1&link_target=blank&appid=549000912&style=22&target=self&s_url=https%3A%2F%2Fqzs.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_qr_app=手机QQ空间&pt_qr_link=https%3A//z.qzone.com/download.html&self_regurl=https%3A//qzs.qq.com/qzone/v6/reg/index.html&pt_qr_help_link=https%3A//z.qzone.com/download.html&pt_no_auth=0"
switchbtn_id = 'switcher_plogin'
username_id = 'u'
password_id = 'p'
loginbtn_id = 'login_button'
comment_class = 'comments-content'
deletebtn_class = 'act-delete'
ackbtn_class = re.compile("qz_dialog_layer_btn qz_dialog_layer_sub")
ackbtn_xpath = r"//a[@class='qz_dialog_layer_btn qz_dialog_layer_sub']"
# selenium初始化
caps = webdriver.DesiredCapabilities().CHROME
options = Options()
# options.add_argument("-headless")  # 此处设置是否为headless模式
prefs={
     
    'profile.default_content_setting_values': {
     
        'images': 2,
    }
}
# options.add_experimental_option('prefs',prefs) # 限制图片、js加载,
driver = webdriver.Chrome(chrome_options=options,executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")

# 用于完成对一条评论删除后,一次跳出多个循环
class BreakLoopException(Exception):
    pass
    
class QQ:
    def __init__(self,username,password,match,**kwargs):
        self.username = username # 账号
        self.password = password  # 密码
        self.match = match  # 需要匹配的评论
        self.interval = 5*60  # 程序执行一次的时间
        self.sleeptime = 10*60  # 程序执行一次后再执行的间隔
        self.retry = 3  # 程序错误后重试次数
        self.number = 100  # 要求加载的说说最少数目

3、步骤详解:

①登录:

这里普通的QQ空间进去后,登录框是在一个iframe里面,因此可以利用selenium的switch_to_frame()函数或者直接在iframe中的网站登录,如下图。
无聊日常--python+selenium+chromedriver 实现QQ空间评论自动删除_第1张图片这里用的是后面这种方法。剩下其他没什么难度,我直接上代码:

    def login(self):
        driver.get(url)
        driver.find_element_by_id(switchbtn_id).click()
        user = driver.find_element_by_id(username_id)
        user.click()
        user.clear()
        user.send_keys(self.username)
        pwd = driver.find_element_by_id(password_id)
        pwd.click()
        pwd.clear()
        pwd.send_keys(self.password)
        driver.find_element_by_id(loginbtn_id).click()
        while True:
            if re.search('(.*?)的QQ空间'</span><span class="token punctuation">,</span>driver<span class="token punctuation">.</span>page_source<span class="token punctuation">)</span><span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"登录成功"</span><span class="token punctuation">)</span>
                <span class="token keyword">break</span>
        self<span class="token punctuation">.</span>page <span class="token operator">=</span> driver<span class="token punctuation">.</span>page_source
</code></pre> 
  <p>这里检测登录成功的方法很低级,以后再来优化吧…</p> 
  <p>②检测是否存在匹配评论:<br> 网站源码如图所示,每一个 li 标签都表示一条说说。<br> <a href="http://img.e-com-net.com/image/info8/0f60643f298e4f09adc36ed809bc777e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/0f60643f298e4f09adc36ed809bc777e.jpg" alt="无聊日常--python+selenium+chromedriver 实现QQ空间评论自动删除_第2张图片" width="650" height="142" style="border:1px solid black;"></a><br> 进一步查看源码:<a href="http://img.e-com-net.com/image/info8/18681c9682164d8181503fcdf7f13c70.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/18681c9682164d8181503fcdf7f13c70.jpg" alt="无聊日常--python+selenium+chromedriver 实现QQ空间评论自动删除_第3张图片" width="650" height="190" style="border:1px solid black;"></a></p> 
  <p>可以看见在div class="f-single-foot"中包含了整个评论模块(div class=“f-single-head f -side” 为姓名,头像信息所在,div class="f-single-content f-wrap"包含说说内容),div class="comments-list"则包含所有评论,由 ul li 存储。</p> 
  <p><a href="http://img.e-com-net.com/image/info8/aee8a7b029c340e08e06f052ba77dde1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/aee8a7b029c340e08e06f052ba77dde1.jpg" alt="无聊日常--python+selenium+chromedriver 实现QQ空间评论自动删除_第4张图片" width="650" height="295" style="border:1px solid black;"></a></p> 
  <p>点开其中的一个 li 标签,可以看到评论在 div class=“comments-content” 中,之后我们将从text属性中提取评论内容以判断是否匹配。div class=“comments-op” 为评论操作按钮:评论+删除。<br> <a href="http://img.e-com-net.com/image/info8/526dc27ee23b49f89270ebb2d879a95d.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/526dc27ee23b49f89270ebb2d879a95d.jpg" alt="无聊日常--python+selenium+chromedriver 实现QQ空间评论自动删除_第5张图片" width="603" height="386" style="border:1px solid black;"></a></p> 
  <p>可见其属性为: act-delete none 。删除 回复按钮需要在有鼠标悬停时才会可见。到此我们可以完成项目了,下面放的程序会比较长,我先简单解释一下逻辑。<br> cleanloop() —— 控制程序间隔self.sleeptime秒,不断的执行 self.interval 秒cleanmanage()。<br> cleanmanage() —— 控制检查程序check()的运行,利用while控制重试次数。<br> check() —— 抓取评论并判断是否匹配self.match,若匹配则进入delete函数,完成操作后利用BreakLoopException跳出本次<br> 循环后重新获取评论。<br> delete() —— 单纯执行删除操作</p> 
  <pre><code class="prism language-python">    <span class="token keyword">def</span> <span class="token function">cleanloop</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"程序运行开始"</span><span class="token punctuation">)</span>
        flag <span class="token operator">=</span> <span class="token string">''</span>
        self<span class="token punctuation">.</span>login<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token comment"># 登录</span>
        <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
            self<span class="token punctuation">.</span>cleanmanage<span class="token punctuation">(</span><span class="token punctuation">)</span>
            time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span>self<span class="token punctuation">.</span>sleeptime<span class="token punctuation">)</span>	<span class="token comment"># 停止运行self.sleeptime s</span>
            flag <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"是否停止执行,Y/N"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>upper<span class="token punctuation">(</span><span class="token punctuation">)</span>
            <span class="token keyword">if</span> flag <span class="token operator">==</span> Y<span class="token punctuation">:</span>
            	<span class="token keyword">break</span>
        driver<span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span>
        
    <span class="token keyword">def</span> <span class="token function">cleanmanage</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
        count <span class="token operator">=</span> <span class="token number">0</span>
        <span class="token keyword">while</span> count <span class="token operator"><</span> self<span class="token punctuation">.</span>retry<span class="token punctuation">:</span>
            <span class="token keyword">try</span><span class="token punctuation">:</span>
                self<span class="token punctuation">.</span>check<span class="token punctuation">(</span><span class="token punctuation">)</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"程序运行 %s s结束,下一次运行时间为 %s s后"</span> <span class="token operator">%</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>interval<span class="token punctuation">,</span>self<span class="token punctuation">.</span>sleeptime<span class="token punctuation">)</span><span class="token punctuation">)</span>
                self<span class="token punctuation">.</span>time <span class="token operator">=</span> time<span class="token punctuation">.</span>time<span class="token punctuation">(</span><span class="token punctuation">)</span>
                <span class="token keyword">break</span>
            <span class="token keyword">except</span><span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'程序运行出错,5s后尝试重新运行程序 -%s'</span> <span class="token operator">%</span>count<span class="token punctuation">)</span>
                time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span>
                count <span class="token operator">+=</span> <span class="token number">1</span>
            <span class="token keyword">if</span> count <span class="token operator">==</span> self<span class="token punctuation">.</span>retry<span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"程序运行失败,请联系开发者"</span><span class="token punctuation">)</span>

    <span class="token keyword">def</span> <span class="token function">check</span><span class="token punctuation">(</span>self<span class="token punctuation">)</span><span class="token punctuation">:</span>
        self<span class="token punctuation">.</span>time <span class="token operator">=</span> time<span class="token punctuation">.</span>time<span class="token punctuation">(</span><span class="token punctuation">)</span>
        js <span class="token operator">=</span> <span class="token string">"window.scrollBy(0,document.body.scrollHeight)"</span>
        <span class="token keyword">while</span> time<span class="token punctuation">.</span>time<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">-</span>self<span class="token punctuation">.</span>time <span class="token operator"><=</span> self<span class="token punctuation">.</span>interval<span class="token punctuation">:</span>
            count <span class="token operator">=</span> <span class="token number">0</span>
            time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span>  <span class="token comment"># 刷新以后停止2s后再进行操作</span>
            driver<span class="token punctuation">.</span>execute_script<span class="token punctuation">(</span>js<span class="token punctuation">)</span>
            self<span class="token punctuation">.</span>comments <span class="token operator">=</span> driver<span class="token punctuation">.</span>find_elements_by_class_name<span class="token punctuation">(</span>comment_class<span class="token punctuation">)</span>
            <span class="token comment"># 完成页面多次下滑,从而加载说说</span>
            <span class="token keyword">while</span> <span class="token builtin">len</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>comments<span class="token punctuation">)</span> <span class="token operator"><</span> self<span class="token punctuation">.</span>number<span class="token punctuation">:</span>
                driver<span class="token punctuation">.</span>execute_script<span class="token punctuation">(</span>js<span class="token punctuation">)</span>
                time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">3</span><span class="token punctuation">)</span>
                self<span class="token punctuation">.</span>comments <span class="token operator">=</span> driver<span class="token punctuation">.</span>find_elements_by_class_name<span class="token punctuation">(</span>comment_class<span class="token punctuation">)</span>
                count<span class="token operator">+=</span><span class="token number">1</span>
                <span class="token keyword">if</span> count<span class="token operator">==</span><span class="token number">3</span><span class="token punctuation">:</span>
                    <span class="token keyword">break</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"评论内容加载完成"</span><span class="token punctuation">)</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">'获取评论总数为: %s'</span> <span class="token operator">%</span> <span class="token builtin">len</span><span class="token punctuation">(</span>self<span class="token punctuation">.</span>comments<span class="token punctuation">)</span><span class="token punctuation">)</span>
            <span class="token keyword">try</span><span class="token punctuation">:</span>
            	<span class="token comment"># 开始查找</span>
                <span class="token keyword">for</span> item <span class="token keyword">in</span> self<span class="token punctuation">.</span>match<span class="token punctuation">:</span>
                    <span class="token keyword">for</span> comment <span class="token keyword">in</span> self<span class="token punctuation">.</span>comments<span class="token punctuation">:</span>
                        <span class="token keyword">if</span> re<span class="token punctuation">.</span>search<span class="token punctuation">(</span>item<span class="token punctuation">,</span> comment<span class="token punctuation">.</span>text<span class="token punctuation">)</span><span class="token punctuation">:</span>
                            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"发现匹配评论 %s "</span> <span class="token operator">%</span> <span class="token builtin">str</span><span class="token punctuation">(</span>comment<span class="token punctuation">.</span>text<span class="token punctuation">)</span><span class="token punctuation">)</span>
                            self<span class="token punctuation">.</span>delete<span class="token punctuation">(</span>comment<span class="token punctuation">)</span>
            <span class="token keyword">except</span> StaleElementReferenceException <span class="token keyword">as</span> e<span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"获取元素错误,5秒后重新查找"</span><span class="token punctuation">)</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"=== "</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span>
                time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span>
                driver<span class="token punctuation">.</span>refresh<span class="token punctuation">(</span><span class="token punctuation">)</span>
                <span class="token keyword">continue</span>
            <span class="token keyword">except</span> BreakLoopException <span class="token keyword">as</span> e<span class="token punctuation">:</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"本轮查找完成,5秒后即将进行下次查找"</span><span class="token punctuation">)</span>
                <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"=== "</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span>
                time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span>
                driver<span class="token punctuation">.</span>refresh<span class="token punctuation">(</span><span class="token punctuation">)</span>
                <span class="token keyword">continue</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"本轮查找完成,5秒后即将进行下次查找"</span><span class="token punctuation">)</span>
            <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"=== "</span> <span class="token operator">*</span> <span class="token number">5</span><span class="token punctuation">)</span>
            time<span class="token punctuation">.</span>sleep<span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span>
            driver<span class="token punctuation">.</span>refresh<span class="token punctuation">(</span><span class="token punctuation">)</span>
            
                
    <span class="token keyword">def</span> <span class="token function">delete</span><span class="token punctuation">(</span>self<span class="token punctuation">,</span>comment<span class="token punctuation">)</span><span class="token punctuation">:</span>
        <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span>
            <span class="token keyword">try</span><span class="token punctuation">:</span>
                ActionChains<span class="token punctuation">(</span>driver<span class="token punctuation">)</span><span class="token punctuation">.</span>move_to_element<span class="token punctuation">(</span>comment<span class="token punctuation">)</span><span class="token punctuation">.</span>perform<span class="token punctuation">(</span><span class="token punctuation">)</span>
                comment<span class="token punctuation">.</span>find_element_by_class_name<span class="token punctuation">(</span>deletebtn_class<span class="token punctuation">)</span><span class="token punctuation">.</span>click<span class="token punctuation">(</span><span class="token punctuation">)</span>
                <span class="token keyword">break</span>
            <span class="token keyword">except</span><span class="token punctuation">:</span>
                <span class="token keyword">try</span><span class="token punctuation">:</span>
                    driver<span class="token punctuation">.</span>execute_script<span class="token punctuation">(</span><span class="token string">'window.scrollBy(0,-100)'</span><span class="token punctuation">)</span>
                    ActionChains<span class="token punctuation">(</span>driver<span class="token punctuation">)</span><span class="token punctuation">.</span>move_to_element<span class="token punctuation">(</span>comment<span class="token punctuation">)</span><span class="token punctuation">.</span>perform<span class="token punctuation">(</span><span class="token punctuation">)</span>
                    comment<span class="token punctuation">.</span>find_element_by_class_name<span class="token punctuation">(</span>deletebtn_class<span class="token punctuation">)</span><span class="token punctuation">.</span>click<span class="token punctuation">(</span><span class="token punctuation">)</span>
                    <span class="token keyword">break</span>
                <span class="token keyword">except</span><span class="token punctuation">:</span>
                    <span class="token keyword">try</span><span class="token punctuation">:</span>
                        driver<span class="token punctuation">.</span>execute_script<span class="token punctuation">(</span><span class="token string">'window.scrollBy(0,100)'</span><span class="token punctuation">)</span>
                        ActionChains<span class="token punctuation">(</span>driver<span class="token punctuation">)</span><span class="token punctuation">.</span>move_to_element<span class="token punctuation">(</span>comment<span class="token punctuation">)</span><span class="token punctuation">.</span>perform<span class="token punctuation">(</span><span class="token punctuation">)</span>
                        comment<span class="token punctuation">.</span>find_element_by_class_name<span class="token punctuation">(</span>deletebtn_class<span class="token punctuation">)</span><span class="token punctuation">.</span>click<span class="token punctuation">(</span><span class="token punctuation">)</span>
                    <span class="token keyword">except</span><span class="token punctuation">:</span>
                        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"无法获取删除按钮,退出删除操作"</span><span class="token punctuation">)</span>
                        <span class="token keyword">raise</span><span class="token punctuation">(</span>BreakLoopException<span class="token punctuation">)</span>
        WebDriverWait<span class="token punctuation">(</span>driver<span class="token punctuation">,</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">.</span>until<span class="token punctuation">(</span><span class="token keyword">lambda</span> x<span class="token punctuation">:</span> x<span class="token punctuation">.</span>find_element_by_xpath<span class="token punctuation">(</span>ackbtn_xpath<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">.</span>click<span class="token punctuation">(</span><span class="token punctuation">)</span>
        <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"评论已删除"</span><span class="token punctuation">)</span>
        <span class="token keyword">raise</span><span class="token punctuation">(</span>BreakLoopException<span class="token punctuation">)</span>
</code></pre> 
  <p>到此 程序就完成了 只需要输入命令即可运行:</p> 
  <pre><code class="prism language-javascript">q <span class="token operator">=</span> <span class="token constant">QQ</span><span class="token punctuation">(</span><span class="token string">'账号'</span><span class="token punctuation">,</span> <span class="token string">'密码'</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token string">'需要匹配的评论'</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
q<span class="token punctuation">.</span><span class="token function">cleanloop</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
</code></pre> 
  <hr> 
  <blockquote> 
   <p>个人项目分享,水平有限。感谢阅读!</p> 
  </blockquote> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1349111900096507904"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(python网络爬虫)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1834746108983734272.htm"
                           title="盘点一个Python网络爬虫抓取股票代码问题(上篇)" target="_blank">盘点一个Python网络爬虫抓取股票代码问题(上篇)</a>
                        <span class="text-muted">皮皮_f075</span>

                        <div>大家好,我是皮皮。一、前言前几天在Python白银群【厚德载物】问了一个Python网络爬虫的问题,这里拿出来给大家分享下。image.png二、实现过程这个问题其实for循环就可以搞定了,看上去粉丝的代码没有带请求头那些,导致获取不到数据。后来【瑜亮老师】、【小王子】给了具体思路,代码如下图所示:image.png后来【小王子】也给了一个具体代码,如下:importrequestsimportt</div>
                    </li>
                    <li><a href="/article/1832831250319110144.htm"
                           title="python网络爬虫(五)——爬取天气预报" target="_blank">python网络爬虫(五)——爬取天气预报</a>
                        <span class="text-muted">光电的一只菜鸡</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%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.注册高德天气key  点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://restapi.amap.com/v3/weather/weatherInfo?parameters,若要获取某城市的天气推荐2.安装MongoDB  Mong</div>
                    </li>
                    <li><a href="/article/1831466833060917248.htm"
                           title="python网络爬虫(一)——网络爬虫基本原理" target="_blank">python网络爬虫(一)——网络爬虫基本原理</a>
                        <span class="text-muted">光电的一只菜鸡</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>1.使用BeautifulSoup解析网页  通过request库已经抓取到网页源码,接下来要从源码中找到并提取数据。BeautifulSoup是python的一个库,其主要功能是从网页中抓取数据。BeautifulSoup目前已经被移植到bs4库中,也就是说在导入BeautifulSoup时需要先安装bs4。安装好bs4库后,还需要安装lxml库。如果我们不安装lxml库,就会使用python默</div>
                    </li>
                    <li><a href="/article/1830401988462997504.htm"
                           title="python网络爬虫(三)——爬虫攻防" target="_blank">python网络爬虫(三)——爬虫攻防</a>
                        <span class="text-muted">光电的一只菜鸡</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%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>  爬虫是模拟人的浏览访问行为,进行数据的批量抓取,当抓取的数据量逐渐增大时,会给被访问的服务器造成很大的压力,甚至有可能崩溃。换句话说就是,服务器是不喜欢有人抓取自己的数据的,那么,网站方面就会这队这些爬虫者采取一些反爬策略。  服务器识别爬虫的一种方式是通过检查连接的User-Agent来识别到底是浏览器访问还是代码访问的。如果是代码访问的,当访问量增大时,服务器其就会直接封掉来访IP。  在</div>
                    </li>
                    <li><a href="/article/1830392281736245248.htm"
                           title="python网络爬虫(二)——数据的清洗与组织" target="_blank">python网络爬虫(二)——数据的清洗与组织</a>
                        <span class="text-muted">光电的一只菜鸡</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>  学会了网络爬虫发送请求后,我们可以获得一段目标的HTML代码,但是还没有把数据提取出来,接下来需要进行数据的清洗与组织。foritemindata:result={'title':item.get_test(),'link':item.get('href')}print(result)  首先明确要提取的数据是标题和链接,标题在a标签中,提取标签的正文用get_text()方法;链接在a标签的</div>
                    </li>
                    <li><a href="/article/1829761908216000512.htm"
                           title="python网络爬虫的流程图_python爬虫系列(1)- 概述" target="_blank">python网络爬虫的流程图_python爬虫系列(1)- 概述</a>
                        <span class="text-muted">weixin_39649965</span>
<a class="tag" taget="_blank" href="/search/python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E7%9A%84%E6%B5%81%E7%A8%8B%E5%9B%BE/1.htm">python网络爬虫的流程图</a>
                        <div>原标题:python爬虫系列(1)-概述事由之前间断地写过一些python爬虫的一些文章,如:工具分享|在线小说一键下载Python帮你定制批量获取智联招聘的信息Python帮你定制批量获取你想要的信息用python定制网页跟踪神器,有信息更新第一时间通知你(附视频演示)把python网页跟踪神器部署到云上,彻底解放你的电脑个人认为学习python语言的话,爬虫是一个非常适合入门的方向。为了把学习</div>
                    </li>
                    <li><a href="/article/1764669073385414656.htm"
                           title="计算机毕设分享 面向高考招生咨询的问答系统设计与实现(源码+论文)" target="_blank">计算机毕设分享 面向高考招生咨询的问答系统设计与实现(源码+论文)</a>
                        <span class="text-muted">源码爱鸭</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E8%80%83/1.htm">高考</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E8%AE%BE/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%BC%80%E6%BA%90/1.htm">开源</a>
                        <div>文章目录0项目说明1项目说明2系统设计3系统功能3.1问答3.2问题模板4实验结果5论文目录6项目工程0项目说明面向高考招生咨询的问答系统设计与实现提示:适合用于课程设计或毕业设计,工作量达标,源码开放1项目说明本系统主要从数据获取,问题分类,问题处理和答案生成以及软件设计四个方面论述自动问答系统的设计与实现。数据获取涉及到网络数据抓取技术,数据库存储与操作,本文使用了python网络爬虫和MyS</div>
                    </li>
                    <li><a href="/article/1761932349962018816.htm"
                           title="盘点CSV文件在Excel中打开后乱码问题的两种处理方法" target="_blank">盘点CSV文件在Excel中打开后乱码问题的两种处理方法</a>
                        <span class="text-muted">皮皮_f075</span>

                        <div>大家好,我是Python进阶者。前几天给大家分享了一些乱码问题的文章,阅读量还不错,感兴趣的小伙伴可以前往:盘点3种Python网络爬虫过程中的中文乱码的处理方法,UnicodeEncodeError:'gbk'codeccan'tencodecharacter解决方法,今天基于粉丝提问,给大家介绍CSV文件在Excel中打开后乱码问题的两种处理方法,希望对大家的学习有所帮助。前言前几天有个叫【R</div>
                    </li>
                    <li><a href="/article/1760910863558037504.htm"
                           title="零基础如何高效的学习好Python爬虫技术?" target="_blank">零基础如何高效的学习好Python爬虫技术?</a>
                        <span class="text-muted">IT青年</span>

                        <div>如何高效学习Python爬虫技术?大部分Python爬虫都是按“发送请求-获得页面-解析页面-抽取并储存内容”流程来进行抓取,模拟人们使用浏览器获取网页信息的过程。高效学习Python爬虫技术的步骤:1、学Python网络爬虫基础知识学Python网络爬虫时先了解Python基本常识,变量、字符串、列表、字典、元组、操控句子、语法等,把基础打牢,在做案例时能知道运用的是哪些知识点。此外还需求了解一</div>
                    </li>
                    <li><a href="/article/1759917185158967296.htm"
                           title="第四篇:python网络爬虫" target="_blank">第四篇:python网络爬虫</a>
                        <span class="text-muted">张箫剑</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>文章目录一、什么是爬虫二、Python爬虫架构三、安装第三方库1.request(网页下载器)2.BeautifulSoup(网页解析器)四、URL管理器五、练习六、小结一、什么是爬虫爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。二、Python爬虫架构Python爬虫架构主要由五个部分组成,分别是调度器、URL管理器、网页下载器、网页解析器、应用程序(爬取的有价值数据)</div>
                    </li>
                    <li><a href="/article/1759747196921671680.htm"
                           title="Python网络爬虫:使用Requests库精通网络请求" target="_blank">Python网络爬虫:使用Requests库精通网络请求</a>
                        <span class="text-muted">web安全工具库</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>源码分享https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tab=BB08J2网络爬虫依赖于强大的库来处理HTTP请求,而Python的Requests库是构建网络爬虫时的首选工具之一。本篇博客将向你介绍如何使用Requests库来发送HTTP请求,并通过具体的代码案例来演示其功能和强大之处。介绍Requests库Requests是一个简单而优雅的HTTP库,</div>
                    </li>
                    <li><a href="/article/1759557556734357504.htm"
                           title="python安装beautifulsoup库_《Python网络爬虫》3.1 BeautifulSoup库安装" target="_blank">python安装beautifulsoup库_《Python网络爬虫》3.1 BeautifulSoup库安装</a>
                        <span class="text-muted">weixin_39830225</span>

                        <div>BeautifulSoupparsesanythingyougiveit,anddoesthetreetraversalstuffforyou.BeautifulSoup也叫美味汤,他是一个非常优秀的python第三方库,它能够对html、xml格式进行解析,并且提取其中的相关信息。在BeautifulSoup的网站上有这样一番话,BeautifulSoup可以对你提供给他的任何格式进行相关的爬取</div>
                    </li>
                    <li><a href="/article/1755575012762337280.htm"
                           title="Python---python网络爬虫入门实践总结" target="_blank">Python---python网络爬虫入门实践总结</a>
                        <span class="text-muted">maidu_xbd</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a>
                        <div>目录一、爬虫介绍二、利用urllib实现最小的爬虫程序三、Requests爬虫实现四、数据解析利器:lxmlxpath五、selenium+chromeDriver一、爬虫介绍爬虫:网络数据采集的程序。爬虫爬取的数据有什么用?(1)资料库(2)数据分析(3)人工智能:人物画像;推荐系统:今日头条、亚马逊等;图像识别;自然语言处理为什么用python写爬虫?java:代码量很大,重构成本变大。php</div>
                    </li>
                    <li><a href="/article/1755238775979524096.htm"
                           title="Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结" target="_blank">Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结</a>
                        <span class="text-muted">雪小妮</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结0.前言相关实战文章:正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东网的商品信息。网络爬虫:模拟客户端批量发送网络请求,批量接收请求对应的数据,按照一定的规则,自动抓取互联网信息的程序,进行数据采集,并进行持久化存储。其他用途:百度搜索,12306抢票、各种抢购、投票、刷票、短信轰炸、网络攻击</div>
                    </li>
                    <li><a href="/article/1754690218461511680.htm"
                           title="如何使用python网络爬虫批量获取公共资源数据实践技术应用" target="_blank">如何使用python网络爬虫批量获取公共资源数据实践技术应用</a>
                        <span class="text-muted">数字化信息化智能化解决方案</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>要使用Python网络爬虫批量获取公共资源数据,你需要遵循以下步骤:确定目标网站和数据结构:首先,你需要明确你要爬取的网站以及该网站的数据结构。了解目标网站的数据结构和API(如果有的话)是关键。选择合适的爬虫框架:Python有很多网络爬虫框架可供选择,如Scrapy、BeautifulSoup、requests等。选择一个适合你需求的框架。安装必要的库:根据你的选择,你可能需要安装一些Pyth</div>
                    </li>
                    <li><a href="/article/1754001771799265280.htm"
                           title="Python网络爬虫入门基础 _反爬虫【4】" target="_blank">Python网络爬虫入门基础 _反爬虫【4】</a>
                        <span class="text-muted">tiamo_16</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">Python网络爬虫</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B/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><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a>
                        <div>1.由于网络爬虫具有一定的弊端,使用网络爬虫可以悄无声息的从互联网上获取很多资源,包括一些付费,原创和不公开的资源。所以很多大型网站都采取了反爬虫机制,来抵御爬虫的不正当行为。2.本次介绍了什么是反网络爬虫?,简单的爬虫伪装操作?以及如何应对网络爬虫?。什么是反网络爬虫?反爬虫:**是指对扫描器中的网络爬虫环节进行反制,它会根据ip访问频率,浏览网页速度和User-Agent等参数来判断是否为网络</div>
                    </li>
                    <li><a href="/article/1753993752067719168.htm"
                           title="【进阶】【Python网络爬虫】【15.爬虫框架】scrapy入门(附大量案例代码)(建议收藏)" target="_blank">【进阶】【Python网络爬虫】【15.爬虫框架】scrapy入门(附大量案例代码)(建议收藏)</a>
                        <span class="text-muted">My.ICBM</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">Python网络爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/scrapy/1.htm">scrapy</a>
                        <div>Python网络爬虫基础一、爬虫框架1.什么是框架?2.初期如何学习框架?二、scrapy入门1.网络爬虫请求数据解析数据保存数据2.scrapy安装安装方式全局命令项目命令案例-scrapy下厨房网爬取settings.pyspidersblood.py案例-scrapy爬取哔哩哔哩网settings.pyitems.pypipelines.pyiderslibi.py-基于终端指令的持久化存储</div>
                    </li>
                    <li><a href="/article/1753175641827590144.htm"
                           title="【Python基础 & 机器学习】Python环境搭建(适合新手阅读的超详细教程)" target="_blank">【Python基础 & 机器学习】Python环境搭建(适合新手阅读的超详细教程)</a>
                        <span class="text-muted">为梦而生~</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0python%E5%AE%9E%E6%88%98/1.htm">机器学习python实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/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%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a>
                        <div>个人主页:为梦而生~关注我一起学习吧!重要专栏:机器学习:相对完整的机器学习基础教学!机器学习python实战:用python带你感受真实的机器学习深度学习:现代人工智能的主流技术介绍python网络爬虫从基础到实战:Python的主流应用领域之一,也可以与人工智能领域相结合的技术往期推荐:【机器学习&深度学习】神经网络简述【机器学习&深度学习】卷积神经网络简述【python爬虫开发实战&情感分析</div>
                    </li>
                    <li><a href="/article/1752862631598768128.htm"
                           title="芒果tv数据采集与可视化实现" target="_blank">芒果tv数据采集与可视化实现</a>
                        <span class="text-muted">叫我:松哥</span>
<a class="tag" taget="_blank" href="/search/php/1.htm">php</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网络爬虫技术,抓取芒果tv的电影信息包括电影名</div>
                    </li>
                    <li><a href="/article/1752465313166802944.htm"
                           title="Python网络爬虫实战——实验2:Python爬虫网络请求与内容解析" target="_blank">Python网络爬虫实战——实验2:Python爬虫网络请求与内容解析</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/1.htm">Python网络爬虫实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>【实验内容】本实验主要通过requests、re与lxml库的使用,采集北京市政府招中标数据。(https://ggzyfw.beijing.gov.cn/index.html)【实验目的】1、熟悉网页结构、了解网络抓包的技巧;2、了解requests网络请求库的基本使用;3、掌握基础的re、xpath语法的使用;【实验步骤】步骤1观察网址结构步骤2获取子页面链接步骤3解析子页面,输出json文件</div>
                    </li>
                    <li><a href="/article/1751596927499124736.htm"
                           title="Python网络爬虫实战——实验4:Python爬虫代理的使用" target="_blank">Python网络爬虫实战——实验4:Python爬虫代理的使用</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/1.htm">Python网络爬虫实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>【实验内容】本实验主要介绍在爬虫采集数据的过程中代理的使用。【实验目的】1、掌握代理使用的基本场景;2、解决IP封锁问题;3、提高爬虫访问效率;【实验步骤】步骤1选择代理服务提供商步骤2配置爬虫使用代理步骤3采集数据生成json文件步骤1选择代理服务提供商(1)代理的概念代理(Proxy)是一种网络服务,它充当客户端和目标服务器之间的中介,接受来自客户端的请求并将其转发给目标服务器。代理可以修改、</div>
                    </li>
                    <li><a href="/article/1751479472927817728.htm"
                           title="Python网络爬虫分步走之 – 第一步:什么是网络爬虫?" target="_blank">Python网络爬虫分步走之 – 第一步:什么是网络爬虫?</a>
                        <span class="text-muted">Jackson@ML</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/Crawler/1.htm">Crawler</a><a class="tag" taget="_blank" href="/search/Search/1.htm">Search</a><a class="tag" taget="_blank" href="/search/Engine/1.htm">Engine</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网络爬虫分步走之第一步:什么是网络爬虫?WebScrapinginPythonStepbyStep–1stStep,WhatisWebCrawler?ByJackson@ML1.什么是网络爬虫?在能够使用Google搜索引擎的场合,你是否尝试过简单搜索:“Howdoesitknowwheretolook?(意思是:如何知道去哪里看?),那么很快,Google返回的答案是:webcraw</div>
                    </li>
                    <li><a href="/article/1751479346566021120.htm"
                           title="一篇文章教会你Python网络爬虫程序的基本执行流程" target="_blank">一篇文章教会你Python网络爬虫程序的基本执行流程</a>
                        <span class="text-muted">chinaherolts2008</span>
<a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/1.htm">python基础教程</a><a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B/1.htm">python基础教程</a>
                        <div>网络爬虫是指在互联网上自动爬取网站内容信息的程序,也被称作网络蜘蛛或网络机器人。大型的爬虫程序被广泛应用python基础教程于搜索引擎、数据挖掘等领域,个人用户或企业也可以利用爬虫收集对自身有价c#教程值的数据。一个网络爬虫程序的基本执行流程可以总结三个过程:请求数据,解析数据,保存数据请求数据请求的数据除了普通的HTML之外,还有json数据、字符串数据、图片、视频、音频等。解析数据当一个数据下</div>
                    </li>
                    <li><a href="/article/1751392816338059264.htm"
                           title="Python网络爬虫实战——实验7:Python使用apscheduler定时采集任务实战" target="_blank">Python网络爬虫实战——实验7:Python使用apscheduler定时采集任务实战</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/1.htm">Python网络爬虫实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>【实验内容】本实验主要介绍在Django框架中使用APScheduler第三方库实现对数据的定时采集。【实验目的】1、掌握APScheduler库的使用;2、学习在Django中实现多个定时任务调度;【实验步骤】步骤1Apscheduler简介与特点步骤2Apscheduler基本概念步骤3在Django中实现多个定时任务调度步骤1:Apscheduler简介与特点(1)简介APScheduler</div>
                    </li>
                    <li><a href="/article/1751392688235626496.htm"
                           title="Python网络爬虫实战——实验5:Python爬虫之selenium动态数据采集实战" target="_blank">Python网络爬虫实战——实验5:Python爬虫之selenium动态数据采集实战</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/1.htm">Python网络爬虫实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a>
                        <div>【实验内容】本实验主要介绍和使用selenium库在js动态加载网页中数据采集的作用。【实验目的】1、理解动态加载网页的概念2、学习Selenium库基本使用3、掌握动态加载数据采集流程【实验步骤】步骤1理解动态加载网页步骤2学习使用Selenium库步骤3采集河北政府采购网步骤1:理解动态加载网页动态加载网页是指在页面初次加载完成后,通过JavaScript等前端技术,根据用户的交互或其他触发条</div>
                    </li>
                    <li><a href="/article/1751392689175150592.htm"
                           title="Python网络爬虫实战——实验6:Python实现js逆向与加解密" target="_blank">Python网络爬虫实战——实验6:Python实现js逆向与加解密</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>【实验内容】本实验主要介绍在数据采集过程中对js代码进行分析从而对加密字段进行解密。【实验目的】1、理解js逆向工程的概念2、学会逆向工程中的加解密分析【实验步骤】步骤1理解js逆向工程的概念步骤2学会逆向工程中的加解密分析步骤3采集广东政府采购网步骤1:理解js逆向工程的概念JavaScript逆向工程是指通过分析、理解和操作JavaScript代码,以揭示和破解其实现的逻辑和功能。这种技术通常</div>
                    </li>
                    <li><a href="/article/1751391791304687616.htm"
                           title="Python网络爬虫实战——实验8:Python爬虫项目部署与kafka消息队实战" target="_blank">Python网络爬虫实战——实验8:Python爬虫项目部署与kafka消息队实战</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/1.htm">Python网络爬虫实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a>
                        <div>【实验内容】本实验主要介绍关于在Linux云环境下部署和运行爬虫项目并使用kafka发送消息队列。【实验目的】1、学会在云环境中部署爬虫项目2、掌握Kafka消息队列的基本使用3、实现爬虫与消息队列的集成【实验步骤】步骤1在Linux上部署爬虫项目步骤2Kafka消息队列的基本使用步骤3在python中向kafka推送消息步骤1:在云环境中部署爬虫项目(1)使用pycharm部署爬虫项目在pych</div>
                    </li>
                    <li><a href="/article/1751383997348331520.htm"
                           title="Python网络爬虫实战——实验1:Python爬虫环境配置" target="_blank">Python网络爬虫实战——实验1:Python爬虫环境配置</a>
                        <span class="text-muted">武汉唯众智创</span>
<a class="tag" taget="_blank" href="/search/Python%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98/1.htm">Python网络爬虫实战</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>综述随着信息时代的到来,互联网上涌现出海量的数据,而网络爬虫作为一种强大的数据采集工具,为我们提供了获取和分析这些数据的途径。本文将为您介绍一系列Python网络爬虫实战实验,从环境配置到项目部署,帮助您全面了解和掌握这一领域的技能。通过本文的实验,您将不仅学会构建一个完整的网络爬虫系统,还能够处理爬虫过程中可能遇到的各种挑战。网络爬虫技能的掌握将为您在数据分析、信息挖掘等领域提供有力的支持,让您</div>
                    </li>
                    <li><a href="/article/1750616156802138112.htm"
                           title="Python网络爬虫是什么意思?" target="_blank">Python网络爬虫是什么意思?</a>
                        <span class="text-muted">老男孩IT教育</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>众所周知,Python是一门脚本语言,也被称为胶水语言,其应用领域也是十分广泛的,哪怕你不想从事IT行业,学习Python语言也是百利而无一害的,今天给大家详细介绍下Python网络爬虫究竟是什么,请看下文:网络爬虫也被称为网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值</div>
                    </li>
                    <li><a href="/article/1749875139907960832.htm"
                           title="python 学习笔记(一)——Requests 库网络爬虫" target="_blank">python 学习笔记(一)——Requests 库网络爬虫</a>
                        <span class="text-muted">ΔQ</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>学习python网络爬虫第一天本博客纯用于学习记录,无其它用途。用到的库requests库,requests库是python自带库,无需安装。lxml库,安装调用pippipinstalllxml案例:电影天堂#encoding:utf-8importrequestsfromlxmlimportetreeBASE_DOMAIN='https://www.dytt8.net/'#定义全局变量第25行</div>
                    </li>
                                <li><a href="/article/85.htm"
                                       title="ztree异步加载" target="_blank">ztree异步加载</a>
                                    <span class="text-muted">3213213333332132</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/ztree/1.htm">ztree</a>
                                    <div>相信新手用ztree的时候,对异步加载会有些困惑,我开始的时候也是看了API花了些时间才搞定了异步加载,在这里分享给大家。 
我后台代码生成的是json格式的数据,数据大家按各自的需求生成,这里只给出前端的代码。 
 
设置setting,这里只关注async属性的配置 
 

            var setting = {
            	//异步加载配置	
      </div>
                                </li>
                                <li><a href="/article/212.htm"
                                       title="thirft rpc 具体调用流程" target="_blank">thirft rpc 具体调用流程</a>
                                    <span class="text-muted">BlueSkator</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a><a class="tag" taget="_blank" href="/search/thrift/1.htm">thrift</a>
                                    <div>Thrift调用过程中,Thrift客户端和服务器之间主要用到传输层类、协议层类和处理类三个主要的核心类,这三个类的相互协作共同完成rpc的整个调用过程。在调用过程中将按照以下顺序进行协同工作: 
        (1)     将客户端程序调用的函数名和参数传递给协议层(TProtocol),协议</div>
                                </li>
                                <li><a href="/article/339.htm"
                                       title="异或运算推导, 交换数据" target="_blank">异或运算推导, 交换数据</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%88%96/1.htm">异或</a><a class="tag" taget="_blank" href="/search/%5E/1.htm">^</a>
                                    <div>/*
 * 5 0101
 * 9 1010
 *
 * 5 ^ 5
 * 0101
 * 0101
 * -----
 * 0000
 * 得出第一个规律: 相同的数进行异或, 结果是0
 *
 * 9 ^ 5 ^ 6
 * 1010
 * 0101
 * ----
 * 1111
 *
 * 1111
 * 0110
 * ----
 * 1001
 </div>
                                </li>
                                <li><a href="/article/466.htm"
                                       title="事件源对象" target="_blank">事件源对象</a>
                                    <span class="text-muted">周华华</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml&q</div>
                                </li>
                                <li><a href="/article/593.htm"
                                       title="MySql配置及相关命令" target="_blank">MySql配置及相关命令</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>        MySQL安装完毕后我们需要对它进行一些设置及性能优化,主要包括字符集设置,启动设置,连接优化,表优化,分区优化等等。 
  
        一 修改MySQL密码及用户 
     </div>
                                </li>
                                <li><a href="/article/720.htm"
                                       title="[简单]poi删除excel 2007超链接" target="_blank">[简单]poi删除excel 2007超链接</a>
                                    <span class="text-muted">53873039oycg</span>
<a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a>
                                    <div>      采用解析sheet.xml方式删除超链接,缺点是要打开文件2次,代码如下: 
     
public void removeExcel2007AllHyperLink(String filePath) throws Exception {
		OPCPackage ocPkg = OPCPac</div>
                                </li>
                                <li><a href="/article/847.htm"
                                       title="Struts2添加 open flash chart" target="_blank">Struts2添加 open flash chart</a>
                                    <span class="text-muted">云端月影</span>

                                    <div>准备以下开源项目: 
1. Struts 2.1.6 
2. Open Flash Chart 2 Version 2 Lug Wyrm Charmer (28th, July 2009) 
3. jofc2,这东西不知道是没做好还是什么意思,好像和ofc2不怎么匹配,最好下源码,有什么问题直接改。 
4. log4j 
 
用eclipse新建动态网站,取名OFC2Demo,将Struts2 l</div>
                                </li>
                                <li><a href="/article/974.htm"
                                       title="spring包详解" target="_blank">spring包详解</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>  
下载的spring包中文件及各种包众多,在项目中往往只有部分是我们必须的,如果不清楚什么时候需要什么包的话,看看下面就知道了。 aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件。Aspectj是java最早的提供AOP的应用框架。 dist 目录下是Spring 的发布包,关于发布包下面会详细进行说明。 docs&nb</div>
                                </li>
                                <li><a href="/article/1101.htm"
                                       title="网站推广之seo概念" target="_blank">网站推广之seo概念</a>
                                    <span class="text-muted">antonyup_2006</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><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><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a>
                                    <div>   持续开发一年多的b2c网站终于在08年10月23日上线了。作为开发人员的我在修改bug的同时,准备了解下网站的推广分析策略。 
    所谓网站推广,目的在于让尽可能多的潜在用户了解并访问网站,通过网站获得有关产品和服务等信息,为最终形成购买决策提供支持。 
    网站推广策略有很多,seo,email,adv</div>
                                </li>
                                <li><a href="/article/1228.htm"
                                       title="单例模式,sql注入,序列" target="_blank">单例模式,sql注入,序列</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F/1.htm">单例模式</a><a class="tag" taget="_blank" href="/search/%E5%BA%8F%E5%88%97/1.htm">序列</a><a class="tag" taget="_blank" href="/search/sql%E6%B3%A8%E5%85%A5/1.htm">sql注入</a><a class="tag" taget="_blank" href="/search/%E9%A2%84%E7%BC%96%E8%AF%91/1.htm">预编译</a>
                                    <div>  
序列在前面写过有关的博客,也有过总结,但是今天在做一个JDBC操作数据库的相关内容时 需要使用序列创建一个自增长的字段  居然不会了,所以将序列写在本篇的前面 
  
 1,序列是一个保存数据连续的增长的一种方式; 
序列的创建; 
 CREATE SEQUENCE seq_pro
  2  INCREMENT BY 1 -- 每次加几个
  3 </div>
                                </li>
                                <li><a href="/article/1355.htm"
                                       title="Mockito单元测试实例" target="_blank">Mockito单元测试实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a>
                                    <div>Mockito单元测试实例: 
public class SettingServiceTest {
    
    private List<PersonDTO> personList = new ArrayList<PersonDTO>();
    
    @InjectMocks
    private SettingPojoService settin</div>
                                </li>
                                <li><a href="/article/1482.htm"
                                       title="精通Oracle10编程SQL(9)使用游标" target="_blank">精通Oracle10编程SQL(9)使用游标</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a>
                                    <div>/*
 *使用游标
 */
--显示游标
--在显式游标中使用FETCH...INTO语句
DECLARE
   CURSOR emp_cursor is 
      select ename,sal from emp where deptno=1;
   v_ename emp.ename%TYPE;
   v_sal emp.sal%TYPE;
begin
   ope</div>
                                </li>
                                <li><a href="/article/1609.htm"
                                       title="【Java语言】动态代理" target="_blank">【Java语言】动态代理</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/java%E8%AF%AD%E8%A8%80/1.htm">java语言</a>
                                    <div>  JDK接口动态代理 
JDK自带的动态代理通过动态的根据接口生成字节码(实现接口的一个具体类)的方式,为接口的实现类提供代理。被代理的对象和代理对象通过InvocationHandler建立关联 
  
package com.tom;

import com.tom.model.User;
import com.tom.service.IUserService;
</div>
                                </li>
                                <li><a href="/article/1736.htm"
                                       title="Java通信之URL通信基础" target="_blank">Java通信之URL通信基础</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</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/ITeye/1.htm">ITeye</a>
                                    <div>java对网络通信以及提供了比较全面的jdk支持,java.net包能让程序员直接在程序中实现网络通信。 
在技术日新月异的现在,我们能通过很多方式实现数据通信,比如webservice、url通信、socket通信等等,今天简单介绍下URL通信。 
学习准备:建议首先学习java的IO基础知识 
  
URL是统一资源定位器的简写,URL可以访问Internet和www,可以通过url</div>
                                </li>
                                <li><a href="/article/1863.htm"
                                       title="博弈Java讲义 - Java线程同步 (1)" target="_blank">博弈Java讲义 - Java线程同步 (1)</a>
                                    <span class="text-muted">boyitech</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E5%90%8C%E6%AD%A5/1.htm">同步</a><a class="tag" taget="_blank" href="/search/%E9%94%81/1.htm">锁</a>
                                    <div>  
在并发编程中经常会碰到多个执行线程共享资源的问题。例如多个线程同时读写文件,共用数据库连接,全局的计数器等。如果不处理好多线程之间的同步问题很容易引起状态不一致或者其他的错误。 
   同步不仅可以阻止一个线程看到对象处于不一致的状态,它还可以保证进入同步方法或者块的每个线程,都看到由同一锁保护的之前所有的修改结果。处理同步的关键就是要正确的识别临界条件(cri</div>
                                </li>
                                <li><a href="/article/1990.htm"
                                       title="java-给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。" target="_blank">java-给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>

public class DeleteExtraSpace {

	/**
	 * 题目:给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
	 * 方法1.用已有的String类的trim和replaceAll方法
	 * 方法2.全部用正则表达式,这个我不熟
	 * 方法3.“重新发明轮子”,从头遍历一次
	 */
	public static v</div>
                                </li>
                                <li><a href="/article/2117.htm"
                                       title="An error has occurred.See the log file错误解决!" target="_blank">An error has occurred.See the log file错误解决!</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/MyEclipse/1.htm">MyEclipse</a>
                                    <div>今天早上打开MyEclipse时,自动关闭!弹出An error has occurred.See the log file错误提示! 
很郁闷昨天启动和关闭还好着!!!打开几次依然报此错误,确定不是眼花了! 
打开日志文件!找到当日错误文件内容: 
--------------------------------------------------------------------------</div>
                                </li>
                                <li><a href="/article/2244.htm"
                                       title="[矿业与工业]修建一个空间矿床开采站要多少钱?" target="_blank">[矿业与工业]修建一个空间矿床开采站要多少钱?</a>
                                    <span class="text-muted">comsci</span>

                                    <div> 
       地球上的钛金属矿藏已经接近枯竭........... 
 
       我们在冥王星的一颗卫星上面发现一些具有开采价值的矿床..... 
 
       那么,现在要编制一个预算,提交给财政部门..</div>
                                </li>
                                <li><a href="/article/2371.htm"
                                       title="解析Google Map Routes" target="_blank">解析Google Map Routes</a>
                                    <span class="text-muted">dai_lm</span>
<a class="tag" taget="_blank" href="/search/google+api/1.htm">google api</a>
                                    <div>为了获得从A点到B点的路劲,经常会使用Google提供的API,例如 
[url] 
http://maps.googleapis.com/maps/api/directions/json?origin=40.7144,-74.0060&destination=47.6063,-122.3204&sensor=false 
[/url] 
从返回的结果上,大致可以了解应该怎么走,但</div>
                                </li>
                                <li><a href="/article/2498.htm"
                                       title="SQL还有多少“理所应当”?" target="_blank">SQL还有多少“理所应当”?</a>
                                    <span class="text-muted">datamachine</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>转贴存档,原帖地址:http://blog.chinaunix.net/uid-29242841-id-3968998.html、http://blog.chinaunix.net/uid-29242841-id-3971046.html! 
 
------------------------------------华丽的分割线-------------------------------- 
</div>
                                </li>
                                <li><a href="/article/2625.htm"
                                       title="Yii使用Ajax验证时,如何设置某些字段不需要验证" target="_blank">Yii使用Ajax验证时,如何设置某些字段不需要验证</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a>
                                    <div>经常像你注册页面,你可能非常希望只需要Ajax去验证用户名和Email,而不需要使用Ajax再去验证密码,默认如果你使用Yii 内置的ajax验证Form,例如: 
$form=$this->beginWidget('CActiveForm', array(        'id'=>'usuario-form',&</div>
                                </li>
                                <li><a href="/article/2752.htm"
                                       title="使用git同步网站代码" target="_blank">使用git同步网站代码</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/crontab/1.htm">crontab</a><a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                    <div>转自:http://ued.ctrip.com/blog/?p=3646?tn=gongxinjun.com 
  
管理一网站,最开始使用的虚拟空间,采用提供商支持的ftp上传网站文件,后换用vps,vps可以自己搭建ftp的,但是懒得搞,直接使用scp传输文件到服务器,现在需要更新文件到服务器,使用scp真的很烦。发现本人就职的公司,采用的git+rsync的方式来管理、同步代码,遂</div>
                                </li>
                                <li><a href="/article/2879.htm"
                                       title="sql基本操作" target="_blank">sql基本操作</a>
                                    <span class="text-muted">蕃薯耀</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/sql%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/1.htm">sql基本操作</a><a class="tag" taget="_blank" href="/search/sql%E5%B8%B8%E7%94%A8%E6%93%8D%E4%BD%9C/1.htm">sql常用操作</a>
                                    <div>sql基本操作 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
蕃薯耀 2015年6月1日 17:30:33 星期一 
  
  
&</div>
                                </li>
                                <li><a href="/article/3006.htm"
                                       title="Spring4+Hibernate4+Atomikos3.3多数据源事务管理" target="_blank">Spring4+Hibernate4+Atomikos3.3多数据源事务管理</a>
                                    <span class="text-muted">hanqunfeng</span>
<a class="tag" taget="_blank" href="/search/Hibernate4/1.htm">Hibernate4</a>
                                    <div>Spring3+后不再对JTOM提供支持,所以可以改用Atomikos管理多数据源事务。Spring2.5+Hibernate3+JTOM参考:http://hanqunfeng.iteye.com/blog/1554251Atomikos官网网站:http://www.atomikos.com/   一.pom.xml 
<dependency>
			<</div>
                                </li>
                                <li><a href="/article/3133.htm"
                                       title="jquery中两个值得注意的方法one()和trigger()方法" target="_blank">jquery中两个值得注意的方法one()和trigger()方法</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/trigger/1.htm">trigger</a>
                                    <div>  在jquery中,有两个值得注意但容易忽视的方法,分别是one()方法和trigger()方法,这是从国内作者<<jquery权威指南》一书中看到不错的介绍 
 
 
1) one方法 
    one方法的功能是让所选定的元素绑定一个仅触发一次的处理函数,格式为 
   one(type,${data},fn) 
&nb</div>
                                </li>
                                <li><a href="/article/3260.htm"
                                       title="拿工资不仅仅是让你写代码的" target="_blank">拿工资不仅仅是让你写代码的</a>
                                    <span class="text-muted">lampcy</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%92%A8%E8%AF%A2/1.htm">咨询</a>
                                    <div>这是我对团队每个新进员工说的第一件事情。这句话的意思是,我并不关心你是如何快速完成任务的,哪怕代码很差,只要它像救生艇通气门一样管用就行。这句话也是我最喜欢的座右铭之一。 
这个说法其实很合理:我们的工作是思考客户提出的问题,然后制定解决方案。思考第一,代码第二,公司请我们的最终目的不是写代码,而是想出解决方案。 
话粗理不粗。 
付你薪水不是让你来思考的,也不是让你来写代码的,你的目的是交付产品</div>
                                </li>
                                <li><a href="/article/3387.htm"
                                       title="架构师之对象操作----------对象的效率复制和判断是否全为空" target="_blank">架构师之对象操作----------对象的效率复制和判断是否全为空</a>
                                    <span class="text-muted">nannan408</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E5%B8%88/1.htm">架构师</a>
                                    <div>1.前言。 
  如题。 
2.代码。 
 (1)对象的复制,比spring的beanCopier在大并发下效率要高,利用net.sf.cglib.beans.BeanCopier 
 

Src src=new Src();
BeanCopier beanCopier = BeanCopier.create(Src.class, Des.class, false);
      </div>
                                </li>
                                <li><a href="/article/3514.htm"
                                       title="ajax 被缓存的解决方案" target="_blank">ajax 被缓存的解决方案</a>
                                    <span class="text-muted">Rainbow702</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/cache/1.htm">cache</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a>
                                    <div>使用jquery的ajax来发送请求进行局部刷新画面,各位可能都做过。 
今天碰到一个奇怪的现象,就是,同一个ajax请求,在chrome中,不论发送多少次,都可以发送至服务器端,而不会被缓存。但是,换成在IE下的时候,发现,同一个ajax请求,会发生被缓存的情况,只有第一次才会被发送至服务器端,之后的不会再被发送。郁闷。 
解决方法如下: 
① 直接使用 JQuery提供的 “cache”参数,</div>
                                </li>
                                <li><a href="/article/3641.htm"
                                       title="修改date.toLocaleString()的警告" target="_blank">修改date.toLocaleString()的警告</a>
                                    <span class="text-muted">tntxia</span>
<a class="tag" taget="_blank" href="/search/String/1.htm">String</a>
                                    <div>  
我们在写程序的时候,经常要查看时间,所以我们经常会用到date.toLocaleString(),但是date.toLocaleString()是一个过时 的API,代替的方法如下: 
  
package com.tntxia.htmlmaker.util;

import java.text.SimpleDateFormat;
import java.util.</div>
                                </li>
                                <li><a href="/article/3768.htm"
                                       title="项目完成后的小总结" target="_blank">项目完成后的小总结</a>
                                    <span class="text-muted">xiaomiya</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E6%80%BB%E7%BB%93/1.htm">总结</a><a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE/1.htm">项目</a>
                                    <div>项目完成了,突然想做个总结但是有点无从下手了。 
做之前对于客户端给的接口很模式。然而定义好了格式要求就如此的愉快了。 
先说说项目主要实现的功能吧 
1,按键精灵 
2,获取行情数据 
3,各种input输入条件判断 
4,发送数据(有json格式和string格式) 
5,获取预警条件列表和预警结果列表, 
6,排序, 
7,预警结果分页获取 
8,导出文件(excel,text等) 
9,修</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>