使用python爬取csdn博客访问量

标签: pythoncsdn博客访问量可视化博客
  1016人阅读  评论(4)  收藏  举报
  分类:
 

最近学习了python和爬虫,想写一个程序练练手,所以我就想到了大家都比较关心的自己的博客访问量,使用python来获取自己博客的访问量,这也是后边我将要进行的项目的一部分,后边我会对博客的访问量进行分析,以折线图和饼图等可视化的方式展示自己博客被访问的情况,使自己能更加清楚自己的哪些博客更受关注,博客专家请勿喷,因为我不是专家,我听他们说专家本身就有这个功能。

一、网址分析

这里写图片描述

进入自己的博客页面,网址为:http://blog.csdn.net/xingjiarong 网址还是非常清晰的就是csdn的网址+个人csdn登录账号,我们来看一下下一页的网址。

这里写图片描述

看到第二页的地址为:http://blog.csdn.net/xingjiarong/article/list/2 
后边的数字表示现在正处于第几页,再用其他的页面验证一下,确实是这样的,那么第一页为什么不是http://blog.csdn.net/xingjiarong/article/list/1呢,那么我们在浏览器中输入http://blog.csdn.net/xingjiarong/article/list/1试试,哎,果然是第一页啊,其实第一页是被重定向了,http://blog.csdn.net/xingjiarong被重定向到http://blog.csdn.net/xingjiarong/article/list/1,所以两个网址都能访问第一页,那么现在规律就非常明显了: 
http://blog.csdn.net/xingjiarong/article/list/ + 页号

二、如何获取标题

右键查看网页的源代码,我们看到可以找到这样一段代码: 
这里写图片描述 
我们可以看到标题都是在标签

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">class</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"link_title"</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"/xingjiarong/article/details/50651235"</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

所以我们可以使用下面的正则表达式来匹配标题:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">class</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"link_title"</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">".*?"</span>></span>(.*?)<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

三、如何获取访问量

拿到了标题之后,就要获得对应的访问量了,经过对源码的分析,我看到访问量的结构都是这样的:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">class</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"link_view"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">title</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"阅读次数"</span>></span>   <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"/xingjiarong/article/details/50651235"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">title</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"阅读次数"</span>></span>阅读<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span>></span>(1140)<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

括号中的数字即为访问量,我们可以用下面的正则表达式来匹配:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">class</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"link_view"</span><span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">.*?</span>></span><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">".*?"</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">title</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"阅读次数"</span>></span>阅读<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span>></span>\((.*?)\)<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">span</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

四、如何判断是否为尾页

接下来我们要判断当前页是否为最后一页,否则我们就不能判断什么时候结束了,我找到了源码中‘尾页’的标签,发现是下面的结构:

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"/xingjiarong/article/list/2"</span>></span>下一页<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span>></span> <span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">"/xingjiarong/article/list/7"</span>></span>尾页<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

所以我们可以用下面的正则表达式来匹配,如果匹配成功就说明当前页不是最后一页,否则当前页就是最后一页。

<code class="hljs xml has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span> <span class="hljs-attribute" style="box-sizing: border-box; color: rgb(102, 0, 102);">href</span>=<span class="hljs-value" style="box-sizing: border-box; color: rgb(0, 136, 0);">".*?"</span>></span>尾页<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"></<span class="hljs-title" style="box-sizing: border-box; color: rgb(0, 0, 136);">a</span>></span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

五、编程实现

下面是完整的代码实现:

<code class="hljs python has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#!usr/bin/python</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># -*- coding: utf-8 -*-</span>

<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'''
Created on 2016年2月13日

@author: xingjiarong

使用python爬取csdn个人博客的访问量,主要用来练手
'''</span>

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> urllib2
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">import</span> re


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#当前的博客列表页号</span>
page_num = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>
<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#不是最后列表的一页</span>
notLast = <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>


account = str(raw_input(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'输入csdn的登录账号:'</span>))

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">while</span> notLast:

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#首页地址</span>
    baseUrl = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'http://blog.csdn.net/'</span>+account
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#连接页号,组成爬取的页面网址</span>
    myUrl = baseUrl+<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'/article/list/'</span>+str(page_num)

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#伪装成浏览器访问,直接访问的话csdn会拒绝</span>
    user_agent = <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'</span>
    headers = {<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'User-Agent'</span>:user_agent}
    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#构造请求</span>
    req = urllib2.Request(myUrl,headers=headers)

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#访问页面</span>
    myResponse = urllib2.urlopen(req)
    myPage = myResponse.read()

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#在页面中查找是否存在‘尾页’这一个标签来判断是否为最后一页</span>
    notLast = re.findall(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'<a href=".*?">尾页</a>'</span>,myPage,re.S)

    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'-----------------------------第%d页---------------------------------'</span> % (page_num,)

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#利用正则表达式来获取博客的标题</span>
    title = re.findall(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'<span class="link_title"><a href=".*?">(.*?)</a></span>'</span>,myPage,re.S)

    titleList=[]
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> title:
        titleList.append(str(items).lstrip().rstrip())     


    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#利用正则表达式获取博客的访问量</span>
    view = re.findall(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'<span class="link_view".*?><a href=".*?" title="阅读次数">阅读</a>\((.*?)\)</span>'</span>,myPage,re.S)

    viewList=[]
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> items <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> view:
        viewList.append(str(items).lstrip().rstrip())

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#将结果输出   </span>
    <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> n <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> range(len(titleList)):
        <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">print</span> <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'访问量:%s 标题:%s'</span> % (viewList[n].zfill(<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>),titleList[n])

    <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#页号加1</span>
    page_num = page_num + <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>

</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li><li style="box-sizing: border-box; padding: 0px 5px;">68</li></ul>

下面是部分结果:

<code class="hljs css has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">输入<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">csdn</span>的登录账号<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:xingjiarong</span>
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-----------------------------</span>第1页<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">---------------------------------</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1821</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:python</span>编程常用模板总结
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1470</span> 标题:设计模式之<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">UML</span>(一)类图以及类间关系(泛化 、实现、依赖、关联、聚合、组合)
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0714</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:ubuntu14</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.04</span>  安装并破解<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">MyEclipse2014</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1040</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:ubuntu14</span><span class="hljs-class" style="box-sizing: border-box; color: rgb(155, 112, 63);">.04</span> 配置<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">tomcat8</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1355</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:java</span>调用<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">python</span>方法总结
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0053</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:Java</span>多线程之<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Callable</span>和<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Future</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1265</span> 标题:跟我学汇编(三)寄存器和物理地址的形成
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1083</span> 标题:跟我学汇编(二)王爽汇编环境搭建
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0894</span> 标题:跟我学汇编(一)基础知识
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:2334</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:java</span>多线程(一)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Race</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Condition</span>现象及产生的原因
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0700</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:Matlab</span>矩阵基础
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0653</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:Matlab</span>变量、分支语句和循环语句
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0440</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:Matlab</span>字符串处理
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0514</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:Matlab</span>运算符与运算
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0533</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:Matlab</span>的数据类型
<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">-----------------------------</span>第2页<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">---------------------------------</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0518</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:OpenStack</span>设计与实现(五)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">RESTful</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">API</span>和<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">WSGI</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0540</span> 标题:解决<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Android</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">SDK</span> <span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Manager</span>下载太慢问题
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0672</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:OpenStack</span>设计与实现(四)消息总线(<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">AMQP</span>)
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0570</span> 标题:分布式文件存储<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>(五)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>常用命令总结
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0672</span> 标题:分布式文件存储<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>(四)配置<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">fastdfs-apache-module</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0979</span> 标题:分布式文件存储<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>(一)初识<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0738</span> 标题:分布式文件存储<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>(三)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>配置
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0682</span> 标题:分布式文件存储<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>(二)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">FastDFS</span>安装
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0511</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:OpenStack</span>设计与实现(三)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">KVM</span>和<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">QEMU</span>浅析
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0593</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:OpenStack</span>设计与实现(二)<span class="hljs-tag" style="color: rgb(0, 0, 0); box-sizing: border-box;">Libvirt</span>简介与实现原理
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0562</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:OpenStack</span>设计与实现(一)虚拟化
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0685</span> 标题:食堂买饭的启示
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0230</span> 标题<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:UML</span>之时序图详解
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:0890</span> 标题:设计模式之桥梁模式和策略模式的区别
访问量<span class="hljs-pseudo" style="color: rgb(0, 0, 0); box-sizing: border-box;">:1258</span> 标题:设计模式(十二)责任链模式</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li></ul>

总结:

使用python编写爬虫,我个人总结了以下的步骤:

1、分析要抓取的网址特征,以确定如何生成相关网页的网址,如果只爬取一个网页,则这一步可以省略。

2、查看网页的源码,分析自己想要爬取的内容所在的标签的特征。

3、使用正则表达式从源码中将自己想要的部分抠出来。

4、编程实现。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐