使用python爬取csdn博客访问量
版权声明:本文为博主原创文章,转载请注明出处,查看原文章,请访问:http://blog.csdn.net/xingjiarong
最近学习了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、编程实现。
更多推荐
- · Elasticsearch复杂数据类型终极指南:从入门到精通
- · 终极指南:Flink SQL连接器版本管理从混乱到有序的升级之路
- · 如何快速搭建Neon无服务器PostgreSQL:面向初学者的完整指南
1301
0
0
- 0
扫一扫分享内容
分享
顶部
所有评论(0)