博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 3 爬起点中文网,简单分析
阅读量:4123 次
发布时间:2019-05-25

本文共 1601 字,大约阅读时间需要 5 分钟。

python 3之后,爬虫相对来说简单一些。主要会用到requests和beautifulsoup库,reuqests代替浏览器发送http请求并返回内容,返回的内容之前都是用正则表达式处理,当然现在也可以,不过现在beautifulsoup库用得比较多。beautifulsoup处理html标签,用得最多的是find、find_all、select函数。

一、研究网页结构

网址:

我用的是chrome浏览器,打开网址,鼠标右键选择“检查”,然后刷新。headers主要是头部信息,preview是页面的结构,主要是根据headers来写requests,分析preview找到自己要爬取的信息然后来写beautifulsoup。

二、爬取第一页内容

在preview里面,我找到了要爬取的信息都在rank-view-list这个标签,所以剩下就很简单了,定位到相应的标签即可。

res=requests.get('https://www.qidian.com/rank/yuepiao?chn=-1&page=1')

soup=BeautifulSoup(res.text,'html.parser')

for news in soup.select('.rank-view-list li'):

    print({'title':news.select('a')[1].text,'name':news.select('a')[2].text,'style':news.select('a')[3].text,'describe':news.select('p')[1].text,'lastest':news.select('p')[2].text})

三、循环爬取25页的内容

因为url的前面都没有变化,只需要更改page后面的参数就好,所以加一个循环,完整代码如下:

import requestsfrom bs4 import BeautifulSoupnewsary=[]for i in range(25):    res=requests.get('http://r.qidian.com/yuepiao?chn=-1&page='+str(i+1))    soup=BeautifulSoup(res.text,'html.parser')    for news in soup.select('.rank-view-list li'):        newsary.append({
'title':news.select('a')[1].text,'name':news.select('a')[2].text,'style':news.select('a')[3].text,'describe':news.select('p')[1].text,'lastest':news.select('p')[2].text,'url':news.select('a')[0]['href'],'votes':news.select('p')[3].text})#将爬取的信息保存到本地的excel文件中import pandasimport openpyxlnewsdf=pandas.DataFrame(newsary)newsdf.to_excel('/Users/songrenqing/Downloads/qidian_rank1.xlsx')

爬好后,在excel中大概是这种形式,我做了一些简单的处理

四、简单的分析 

爬取到的信息主要是最新更新的章节,作者,文章类型,书名,书籍链接,简介,票数。然后用jupyter对数据进行了些简单的处理,用matplotlib绘图。

选取了得票最高的十位作者

都市和玄幻类题材最受作者欢迎,这两个题材的写作者占了一半左右。

你可能感兴趣的文章
100道+ JavaScript 面试题,助你查漏补缺
查看>>
JavaScript深入理解之闭包
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>
6种方式实现JavaScript数组扁平化(flat)方法的总结
查看>>
如何实现a===1 && a===2 && a===3返回true?
查看>>
49个在工作中常用且容易遗忘的CSS样式清单整理
查看>>
20种在学习编程的同时也可以在线赚钱的方法
查看>>
隐藏搜索框:CSS 动画正反向序列
查看>>
12 个JavaScript 特性技巧你可能从未使用过
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
8种ES6中扩展运算符的用法
查看>>
【视频教程】Javascript ES6 教程28—ES6 Promise 实例应用
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
【web素材】03-24款后台管理系统网站模板
查看>>