抓取文章的链接,访问量保存到本地

  1. #coding=utf-8
  2. import requests as req
  3. import re
  4. import urllib
  5. from bs4 import BeautifulSoup
  6. import sys
  7. import codecs
  8. import time
  9.  
  10. r=req.get('https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000',
  11. 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'})
  12. content=r.text
  13. #print(content)
  14. soup=BeautifulSoup(content,'html.parser')
  15.  
  16. #下面2行内容解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 63-64问题,但是加了后print就打印不出来了,需要查原因
  17. reload(sys)
  18. sys.setdefaultencoding('utf-8')
  19.  
  20. i=0
  21. for tag in soup.find_all(re.compile(r'^a{1}'),{'class':'x-wiki-index-item'}):
  22. i=i+1
  23. if i%3==0:
  24. time.sleep(30)
  25. name=tag.get_text()
  26. href='https://www.liaoxuefeng.com'+tag['href']
  27. 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'})
  28. time.sleep(3)
  29. soup2=BeautifulSoup(req2.text,'html.parser')
  30. count=soup2.find_all('div',{'class':'x-wiki-info'})
  31. try:
  32. co=count[0].find('span').get_text()
  33. co=co[7:]
  34. except IndexError as e:
  35. co=''
  36. with open('E:/sg_articles.xlsx', 'a+') as f:
  37. f.write(codecs.BOM_UTF8)#解决写入csv后乱码问题
  38. f.write(name+','+href+','+co+'\n')
  39. '''
  40. 睡眠是因为网页访问过多就会报503 Service Unavailable for Bot网站超过了iis限制造成的由于2003的操作系统在提示IIS过多时并非像2000系统提示“链接人数过多”
  41. http://www.51testing.com/html/53/15150753-4455790.html --数据可视化
  42. http://www.cnblogs.com/xxoome/p/5880693.html --python引入模块时import与from ... import的区别
  43. https://www.cnblogs.com/amou/p/9184614.html --讲解几种爬取网页的匹配方式
  44. https://www.cnblogs.com/yinheyi/p/6043571.html --python基本语法
  45. '''

上面代码的思路:先获取主网页,再遍历主网页上的文章链接并请求这些链接以进入子网页,从而获得子网页中span标签保存的访问量。

下面打开本地文件,pandas进行数据分析,然后pyecharts实现图形化

  1. #coding=utf-8
  2. from pyecharts import Bar
  3. import pandas as pd
  4.  
  5. p=pd.read_excel('E:\sg_articles.xls',names=["title","href","count"])
  6. a=p.sort_values(by='count',ascending=False)[0:3]
  7. title=a['title']
  8. count=a['count']
  9. bar=Bar("点击量TOP3", title_pos='center', title_top='', width=800, height=400)
  10. bar.add("", title, count, is_convert=True, xaxis_min=10, yaxis_rotate=30, yaxis_label_textsize=10, is_yaxis_boundarygap=True, yaxis_interval=0,
  11. is_label_show=True, is_legend_show=False, label_pos='right',is_yaxis_inverse=True, is_splitline_show=False)
  12. 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抓取网页数据处理后可视化的更多相关文章

  1. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  2. python抓取网页例子

    python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...

  3. python抓取网页过程

    准备过程 1.抓取网页的过程 准备好http请求(http request)->提交对应的请求->获得返回的响应(http response)->获得网页源码 2.GET还是POST ...

  4. Python抓取网页中的图片到本地

    今天在网上找了个从网页中通过图片URL,抓取图片并保存到本地的例子: #!/usr/bin/env python # -*- coding:utf- -*- # Author: xixihuang # ...

  5. python抓取网页引用的模块和类

    在Python3.x中,我们可以使用urlib这个组件抓取网页,urllib是一个URL处理包,这个包中集合了一些处理URL的模块,如下:1.urllib.request模块用来打开和读取URLs:2 ...

  6. python抓取网页中图片并保存到本地

    #-*-coding:utf-8-*- import os import uuid import urllib2 import cookielib '''获取文件后缀名''' def get_file ...

  7. python 抓取网页一部分

    import re import requests from bs4 import BeautifulSoup response = requests.get("https://jecvay ...

  8. 网络爬虫-使用Python抓取网页数据

    搬自大神boyXiong的干货! 闲来无事,看看了Python,发现这东西挺爽的,废话少说,就是干 准备搭建环境 因为是MAC电脑,所以自动安装了Python 2.7的版本 添加一个 库 Beauti ...

  9. 浅谈如何使用python抓取网页中的动态数据

    我们经常会发现网页中的许多数据并不是写死在HTML中的,而是通过js动态载入的.所以也就引出了什么是动态数据的概念, 动态数据在这里指的是网页中由Javascript动态生成的页面内容,是在页面加载到 ...

随机推荐

  1. Java笔记Spring(八)

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  2. C语言,链表操作

    #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string ...

  3. python-web自动化-键盘操作

    selenium提供了较为完整的键盘操作引入 from selenium.webdriver.common.keys import Keys使用键盘操作时,需要借助send_keys()来模拟操作.K ...

  4. C 语言 变量的赋值和初始化

    根据我所了解和理解: int i 当定义一个这样的变量的时候,计算机将在内存中给变量分配空间,此时 i 的值为,此处空间内原来是什么现在还是什么,相当于打开一个房间,你没有清扫它你就住进去了. 多变量 ...

  5. 在c#中利用keep-alive处理socket网络异常断开的方法

    本文摘自 http://www.z6688.com/info/57987-1.htm 最近我负责一个IM项目的开发,服务端和客户端采用TCP协议连接.服务端采用C#开发,客户端采用Delphi开发.在 ...

  6. java反射应用

    package cn.sxt.TestClass; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetE ...

  7. Linux充电站

    [Ansible中文权威指南] [鸟哥的linux私房菜] AWK使用手册 Centos的epel源下载 Ceph国内社区 chef简明手册 ChinaUnix运维文库 Confluence和Jira ...

  8. 996 icu我能为你做什么?

    今天996,未来icu 996icu地址:https://github.com/996icu/996.ICU 前段时间github上出现了,一个讨论996的项目,这个项目使中国的软件工程师达到了空前的 ...

  9. Delphi中Chrome Chromium、Cef3学习笔记(六)

    原文   http://blog.csdn.net/xtfnpgy/article/details/71703317   一.CEF加载网页时空白 chrm1.Load(‘你的网址’); 出现空白,跟 ...

  10. R数据导入导出(一): read.table()和read.csv()的区别

    之前也参考过一些资料,虽然是这么简单的两个buildin,还是仔细对比了一下,我有两张txt,都是从cube中导出的,就意味着每一列的列数是不一样的.R语言官方文档中有这样一句话不知道大家注意到了没有 ...