当前位置:首页 » 编程语言 » pythoncsdn

pythoncsdn

发布时间: 2023-03-28 07:51:39

Ⅰ 怎么利用python爬取csdn博客访问量例子

一、网址分析

进入自己的博客页面,网址为: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/ + 页号

二、如何获取标题

右键查看网页的源代码,我们看到可以找到这样一段代码:

我们可以看到标题都是在标签

<span class="link_title"><a href="/xingjiarong/article/details/50651235">

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

<span class="link_title"><a href=".*?">(.*?)</a></span>

三、如何获取访问量

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

<span class="link_view" title="阅读次数"> <a href="/xingjiarong/article/details/50651235" title="阅读次数">阅读</a>(1140)</span>

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

<span class="link_view".*?><a href=".*?" title="阅读次数">阅读</a>\((.*?)\)</span>

四、如何判断是否为尾页

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

<a href="/xingjiarong/article/list/2">下一页</a> <a href="/xingjiarong/article/list/7">尾页</a>

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

<a href=".*?">尾页</a>

五、编程实现

下面是完整的代码实现:

#!usr/bin/python
# -*- coding: utf-8 -*-
'''
Created on 2016年2月13日
@author: xingjiarong
使用python爬取csdn个人博客的访问量,主要用来练手
'''
import urllib2
import re
#当前的博客列表页号
page_num = 1
#不是最后列表的一页
notLast = 1
account = str(raw_input('输入csdn的登录账号:'))
while notLast:
#首页地址
baseUrl = 'http://blog.csdn.net/'+account
#连接页号,组成爬取的页面网址
myUrl = baseUrl+'/article/list/'+str(page_num)
#伪装成浏览器访问,直接访问的话csdn会拒绝
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
headers = {'User-Agent':user_agent}
#构造请求
req = urllib2.Request(myUrl,headers=headers)
#访问页面
myResponse = urllib2.urlopen(req)
myPage = myResponse.read()
#在页面中查找是否存在‘尾页'这一个标签来判断是否为最后一页
notLast = re.findall('<a href=".*?">尾页</a>',myPage,re.S)
print '-----------------------------第%d页---------------------------------' % (page_num,)
#利用正则表达式来获取博客的标题
title = re.findall('<span class="link_title"><a href=".*?">(.*?)</a></span>',myPage,re.S)
titleList=[]
for items in title:
titleList.append(str(items).lstrip().rstrip())
#利用正则表达式获取博客的访问量
view = re.findall('<span class="link_view".*?><a href=".*?" title="阅读次数">阅读</a>\((.*?)\)</span>',myPage,re.S)
viewList=[]
for items in view:
viewList.append(str(items).lstrip().rstrip())
#将结果输出
for n in range(len(titleList)):
print '访问量:%s 标题:%s' % (viewList[n].zfill(4),titleList[n])
#页号加1
page_num = page_num + 1

Ⅱ Python Matplotlib画图

主要用于作图、可视化问题

pip install matplotlib

导入模块 pyplot 和 pylab ,可以参考下面链接观察两者区别:
https://www.cnblogs.com/Shoesy/p/6673947.html
(说白了就是pylay=pyplot+numpy)

输入这三行解决

主要使用 plot() 来展示,里面前两个参数代表 x , y 坐标(注意x,y数量要一样),第三个参数可以用来设置散点图( 'o' )或者颜色、线条形式等各种样式,并且第三个参数可以同时传入多个,比如要红色的散点图就: Ɔr'
(1)颜色样式:

(2)线条样式:

(3)点的样式:

(4)坐标区间:

或者分别设置x、y的区间:

注:
设置点的样式时默认就是散点图,以及同类样式只能设置一个(比如不能设置两种颜色),并且还可以把多个图集合在一起展示,那就多 plot 几个,plot就相当于一个画布,每plot一个就相当于在上面画一张图,再弄就继续在上面画

主要用 hist() 来显示,实现方式很简单,把一组数据放入括号里就行了,例如随机生成一堆正态分布的数,然后直方图显示:

其中如果要设置直方图格式(宽度、上下限、是否要轮廓)可以这样:

注:
直方图和折线图这些不太一样,折线图是传入两个等长数据,然后每个x、y坐标一一对应展示出来。而直方图是:第一个参数代表你传入的所有数据,第二个参数代表你传入的x轴范围,然后直方图会将第一个参数里传入的数据一个个计算在某个范围内含有的数据量,因此传入的两个参数数据不一定要等长,例如下面的例子:

结果如图:

可以看出数据被自动分配到对应的范围内上了

使用 subplot(row, col, area) :三个参数分别是行数、列数和区域,比如要将原图分成2行2列(切成4份),然后要左下角那个图就:

如果想4个图都显示就4个 subplot ,分别1、2、3、4就行了,然后在各图的subplot之后写的都是每个图的内容,现在我们试试弄一个2行,第一行两列的图片(想象下鼠标的样子),而且分别是不同的内容:

注:
labels 、 sizes 、 colors 和 explode 的长度都要一样

1.导入3D图相关模块:

2.将画图板加到3D模块里,然后加入数据即可:

3D散点图举例:

通过 imread() 读取,举例:

https://blog.csdn.net/qq_34859482/article/details/80617391

热点内容
python修改文件某一行 发布:2024-05-05 22:18:22 浏览:456
md5加密64 发布:2024-05-05 21:59:30 浏览:526
259pp页面访问升级 发布:2024-05-05 21:47:51 浏览:88
迅雷阻止上传 发布:2024-05-05 21:26:19 浏览:913
数据库运维题 发布:2024-05-05 21:21:47 浏览:961
RM魔塔编程 发布:2024-05-05 21:21:47 浏览:285
matlab获取文件夹 发布:2024-05-05 21:12:24 浏览:291
一根式算法 发布:2024-05-05 21:12:23 浏览:955
php无刷新 发布:2024-05-05 21:08:11 浏览:982
搭建一个流媒体服务器 发布:2024-05-05 20:40:59 浏览:667