python抓取网页数据处理后可视化
抓取文章的链接,访问量保存到本地
#coding=utf-8
import requests as req
import re
import urllib
from bs4 import BeautifulSoup
import sys
import codecs
import time r=req.get('https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000',
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'})
content=r.text
#print(content)
soup=BeautifulSoup(content,'html.parser') #下面2行内容解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 63-64问题,但是加了后print就打印不出来了,需要查原因
reload(sys)
sys.setdefaultencoding('utf-8') i=0
for tag in soup.find_all(re.compile(r'^a{1}'),{'class':'x-wiki-index-item'}):
i=i+1
if i%3==0:
time.sleep(30)
name=tag.get_text()
href='https://www.liaoxuefeng.com'+tag['href']
req2=req.get(href,headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'})
time.sleep(3)
soup2=BeautifulSoup(req2.text,'html.parser')
count=soup2.find_all('div',{'class':'x-wiki-info'})
try:
co=count[0].find('span').get_text()
co=co[7:]
except IndexError as e:
co=''
with open('E:/sg_articles.xlsx', 'a+') as f:
f.write(codecs.BOM_UTF8)#解决写入csv后乱码问题
f.write(name+','+href+','+co+'\n')
'''
睡眠是因为网页访问过多就会报503 Service Unavailable for Bot网站超过了iis限制造成的由于2003的操作系统在提示IIS过多时并非像2000系统提示“链接人数过多”
http://www.51testing.com/html/53/15150753-4455790.html --数据可视化
http://www.cnblogs.com/xxoome/p/5880693.html --python引入模块时import与from ... import的区别
https://www.cnblogs.com/amou/p/9184614.html --讲解几种爬取网页的匹配方式
https://www.cnblogs.com/yinheyi/p/6043571.html --python基本语法
'''
上面代码的思路:先获取主网页,再遍历主网页上的文章链接并请求这些链接以进入子网页,从而获得子网页中span标签保存的访问量。

下面打开本地文件,pandas进行数据分析,然后pyecharts实现图形化
#coding=utf-8
from pyecharts import Bar
import pandas as pd p=pd.read_excel('E:\sg_articles.xls',names=["title","href","count"])
a=p.sort_values(by='count',ascending=False)[0:3]
title=a['title']
count=a['count']
bar=Bar("点击量TOP3", title_pos='center', title_top='', width=800, height=400)
bar.add("", title, count, is_convert=True, xaxis_min=10, yaxis_rotate=30, yaxis_label_textsize=10, is_yaxis_boundarygap=True, yaxis_interval=0,
is_label_show=True, is_legend_show=False, label_pos='right',is_yaxis_inverse=True, is_splitline_show=False)
bar.render("E:\点击量TOP3.html")
最后的结果

同时还有很多疑问,需要懂的朋友帮忙解答:
1.第一段代码中保存的xlsx格式,实际保存后打开是提示有损坏的,使用xml打开则就没有问题,另存为xls格式后打开也没有问题
2.访问量过多会报错,我就利用了sleep,但实际上访问量间断性的读取到了值,有的为什么读不到值了?
3.利用sort_values对count列进行排序取前3,这个会自动排除掉excel表格的第一行,不知道是为什么
感觉后面我还需要强化1)pandas数据处理的方法,比如分组排序等
2)正则表达式的提取
3)pyecharts的图形绘制
4)在遇到网页有反爬情况下的虚拟ip设置等
记录我的python学习之路,大家一起努力哟~~
python抓取网页数据处理后可视化的更多相关文章
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
- python抓取网页过程
准备过程 1.抓取网页的过程 准备好http请求(http request)->提交对应的请求->获得返回的响应(http response)->获得网页源码 2.GET还是POST ...
- Python抓取网页中的图片到本地
今天在网上找了个从网页中通过图片URL,抓取图片并保存到本地的例子: #!/usr/bin/env python # -*- coding:utf- -*- # Author: xixihuang # ...
- python抓取网页引用的模块和类
在Python3.x中,我们可以使用urlib这个组件抓取网页,urllib是一个URL处理包,这个包中集合了一些处理URL的模块,如下:1.urllib.request模块用来打开和读取URLs:2 ...
- python抓取网页中图片并保存到本地
#-*-coding:utf-8-*- import os import uuid import urllib2 import cookielib '''获取文件后缀名''' def get_file ...
- python 抓取网页一部分
import re import requests from bs4 import BeautifulSoup response = requests.get("https://jecvay ...
- 网络爬虫-使用Python抓取网页数据
搬自大神boyXiong的干货! 闲来无事,看看了Python,发现这东西挺爽的,废话少说,就是干 准备搭建环境 因为是MAC电脑,所以自动安装了Python 2.7的版本 添加一个 库 Beauti ...
- 浅谈如何使用python抓取网页中的动态数据
我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到 ...
随机推荐
- Java解析XML之Dom4j
Java解析XML文件的方法有多种,个人感觉最常用的是使用Dom4j来解析XML文件.下面就简单介绍下Dom4j的基础使用. Dom4j需要jar包的支持,大家可以从网络上下载,如dom4j-1.6. ...
- .net core2.2
GetCurrentDirectory returns the worker directory of the process started by IIS rather than the app's ...
- Hello_Git!!!(Git的安装)
Install_Git&Say Hello! Mac与Linux平台 ||最近的Mac平台中都预装了Git,而各个版本的Linux中也都以软件包(Package)的形式提供给了用户,详细请参 ...
- docker的核心概念和安装
里Dcoker的安装要求 我这里安装的是在vmware下的centos7 64位 并且通过模拟远程连接xshell 我在安装好之后就配置了静态ip,这里我就不多说怎么配置了 具体静态ip配置可以参考 ...
- lvm再次学习
目录 LVM构架 分区 pvcreat vgcreat lvcreat 格式化文件系统 挂载至目录 已经学过很多很多遍LVM了,每次都觉得自己学会了,每次都是得查询才能搞定,这次给LVM做个专题,在有 ...
- 团队第十次 # scrum meeting
github 本此会议项目由PM召开,召开时间为4-15日晚上9点,以大家在群里讨论为主 召开时长10分钟 任务表格 袁勤 负责整理实验报告前后端交互,即xml文件传值部分 负责整理实验报告前后端交互 ...
- JS 实现右下角弹窗
<!DOCTYPE HTML> <head> <title>JS实现右下角弹窗</title> <meta http-equiv="co ...
- Angular 引入第三方框架方法(如Jquery,Bootstrap)
1.npm i jquery --save / npm i bootstrap --save 2.angular.json 引入路径 3.引入Jquery和Bootstrap的类型描述文件 ...
- Python笔记:编码问题
1. python2的编码: python2中使用的是ASCII码,所以不支持中文,如果要在python2中写入中文编码,需要在文件头编写: #-*- encoding:utf-8 -*- 2. 不同 ...
- 29.python环境搭建
新的笔记本上搭建的python运行环境:1.首先现在下载python版本,我这里拿的是之前用的3.5老版本 2.双击安装(勾选 add Python3.5 to path) 3.检测是否安装成功 4. ...