python10min系列之小爬虫

前一篇可视化大家表示有点难,写点简单的把,比如命令行里看论坛的十大,大家也可以扩展为抓博客园的首页文章

本文原创,同步发布在我的github

据说去github右上角先给个star再看,能掌握博客代码的100% 哈哈

我是北交大的,所以就拿自己学校练手吧 知行论坛,大家学会方法后,爬什么都很easy啦,用简单的代码,说明简单爬虫的原理即可

文章代码地址

基本所有学校论坛,都有一个十大模块,我们学校也不例外,也是我比较关注的,我们就写个脚本爬一下十大列表吧

图里红色方块,就是我关心的部分,在写爬虫之前,我们先来普及一下基础知识,我们看到的网站,是红红绿绿,挺好看的,但是代码看来,其实就是一大串字符构成,比如我们新建一个文件,zhixing.html,注意,一定要用.html结尾,用文本编辑器打开,输入以下内容

name:<input type="text">
<input type="button" value="click me">

然后双击,浏览器会打开这个页面,你就会看到一个输入框,和一个按钮,见下图,这就是最简单的html

所以我们用代码去抓各种网站,代码其实看到的,就是一堆html标签,我们需要做的,就是从标签里面解析出我们想要的内容,并且输出

我们需要python的requests模块来发送请求,用pyquery来解析数据

# coding=utf-8
import requests url = 'http://zhixing.bjtu.edu.cn/portal.php'
r = requests.get(url)
print r.text

这几行代码抓取的内容,应该和大家在浏览器里 右键->查看源代码看到的东西是一样的

我们已经获取和网页的内容,肿么拿到十大的内容呢

复杂的html结构,各种层级嵌套,如果想自己写一个解析html的工具,估计还没学会编程就直接狗带了,我们一定要善于使用现有的工具,比如我很喜欢的pyquery,

- pyquery是python的一个模块,使用jquery的语法解析html文档

身为一个前端工程师,对pyquery简直毫无抵抗力,看代码之前,给大家再普及一下,我们在chrome里右键->审查元素(或者点F12),就可以看到浏览器的元素层级结构,具体见下图,我们通过html元素的id或者class属性找到元素即可

先看下F12页面,比如我们查看头部的banner广告

再看十大对应的标签位置

找到了两个模块的id,聚焦的id是portal_block_654,十大的是portal_block_617

再深入寻找十大标题的具体标签,见下图

我们找到了具体的标签,通俗易懂的方式就是,网页里面,id是portal_block_617和标签下面的li标签,下面的a标签就是

- 找id的语法,是#,class是小数点. 标签就是标签名,这是juqey的基本语法,这些基础内容可以直接百度

代码呼之欲出

# coding=utf-8
import requests
from pyquery import PyQuery as pq url = 'http://zhixing.bjtu.edu.cn/portal.php'
r = requests.get(url)
p = pq(r.text).find('#portal_block_617 li>a')
for d in p:
print pq(d).text()

效果如图 不动戳大

我们已经成功拿到标题啦,如果想加上今日聚焦,今日聚焦和十大的标签结构有点不太一样,是table包起来的,所以只需要稍微改一下下,代码如下,主要是find的地方不太一样


# coding=utf-8
import requests
from pyquery import PyQuery as pq url = 'http://zhixing.bjtu.edu.cn/portal.php'
r = requests.get(url)
p = pq(r.text).find('#portal_block_654 table a')
for d in p:
print pq(d).text()

执行效果如下

bingo,稍微扩展一下上面的代码,把每个十大的连接地址拿出来(今日聚焦的自己扩展吧)

# coding=utf-8
import requests
from pyquery import PyQuery as pq url = 'http://zhixing.bjtu.edu.cn/portal.php'
r = requests.get(url)
p = pq(r.text).find('#portal_block_617 li>a')
for d in p:
print pq(d).text()
print 'http://zhixing.bjtu.edu.cn/'+pq(d).attr('href')

效果如下

最终结果

今天舍友推荐了首神曲,超越《忐忑》
http://zhixing.bjtu.edu.cn/thread-976923-1-1.html
咱们交大部分人素质真心不敢恭维
http://zhixing.bjtu.edu.cn/thread-976951-1-1.html
大摆长裙如何愉快滴坐下
http://zhixing.bjtu.edu.cn/thread-976887-1-1.html
积分增长这么慢,何日才能升级啊。。。
http://zhixing.bjtu.edu.cn/thread-976954-1-1.html
求推介高清电影论坛
http://zhixing.bjtu.edu.cn/thread-976901-1-1.html
我双十一的包裹终于到北京辣~\(≧▽≦)/~
http://zhixing.bjtu.edu.cn/thread-976912-1-1.html
【论】别人家的学校~
http://zhixing.bjtu.edu.cn/thread-976966-1-1.html
我觉得知行应该搞一个板块叫过往的十大
http://zhixing.bjtu.edu.cn/thread-976946-1-1.html
我觉得在宿舍拖凳子声音应该小点
http://zhixing.bjtu.edu.cn/thread-976928-1-1.html
免费的论文查重网站
http://zhixing.bjtu.edu.cn/thread-976970-1-1.html

今天的第一部分先单这里,我们已经拿到了连接地址,就可以继续去抓帖子的具体地址,还可以根据用户选择,去查看不同帖子的内容,甚至还可以发帖和恢复,但是有一个问题,那就是

- 知行的帖子查看是需要登录的,我们现在直接抓,只会抓到让你登录的信息

我们需要一个东西叫做cookie,我们的登录信息都存放在cookie里面,我们抓取网页的时候,带上登录信息,就像咱们的一卡通一样,不带卡进宿舍楼,就会被拦着,带着一卡通就可以畅通无阻啦,我们就需要带着登录的cookie去抓十大的具体信息就OK拉

后续教程:

  • 模拟登录,抓取十大具体的帖子内容
  • 简单的回复帖子
  • 把十大的信息汇总,生成pdf
  • 会抓取信息,后续扩展就很多啦,比如爬知乎的文章,爬天气预报,然后汇总一下,给自己发邮件都是很easy的拉
  • 利用新浪微博的接口,做一个命令行版的微博,命令行里就可以刷微博
  • 比如知乎上的PC大大,是我很崇拜的,可以把他的专栏 面向工资编程的所有文章都爬下来,拼接一下,自动生成一个pdf,打印出来周末在家慢慢读,这是我下一步要做的教程,大家敬请期待

以上,都是在命令行里执行的 我写代码的间隙,执行一下命令,就可以看下母校的十大,关注一下学校最近的状况,不耽误时间哦

python 10 min系列三之小爬虫(一)的更多相关文章

  1. 用Python 3写的一个Spider小爬虫(使用内置urllib模块and正则表达式)

    用Python写了一个Spider小爬虫,爬一爬斗鱼“王者荣耀”在线直播的主播及人气

  2. Python基础笔记系列三:list列表

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! python中的list列表是一种序列型数据类型,一有序数据集合用逗号间隔 ...

  3. Python自然语言处理 - 系列三

    有监督分类过程 ![enter image description here][1]例子:涉及一个特征器,给定一个姓名分析出是男性名字还是女性名字 分析:男性和女性的名字有一些鲜明的特点.以a,e 和 ...

  4. 放养的小爬虫--京东定向爬虫(AJAX获取价格数据)

    放养的小爬虫--京东定向爬虫(AJAX获取价格数据) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wang/Sp ...

  5. 爬虫系列(三) urllib的基本使用

    一.urllib 简介 urllib 是 Python3 中自带的 HTTP 请求库,无需复杂的安装过程即可正常使用,十分适合爬虫入门 urllib 中包含四个模块,分别是 request:请求处理模 ...

  6. Python 小爬虫流程总结

    接触Python3一个月了,在此分享一下知识点,也算是温故而知新了. 接触python之前是做前端的.一直希望接触面能深一点.因工作需求开始学python,几乎做的都是爬虫..第一个demo就是爬取X ...

  7. Python 基于学习 网络小爬虫

    <span style="font-size:18px;"># # 百度贴吧图片网络小爬虫 # import re import urllib def getHtml( ...

  8. Python爬虫01——第一个小爬虫

    Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后实现对用户所给的链接进行抓取 最后要有一定的 ...

  9. Python 学习(1) 简单的小爬虫

    最近抽空学了两天的Python,基础知识都看完了,正好想申请个联通日租卡,就花了2小时写了个小爬虫,爬一下联通日租卡的申请页面,看有没有好记一点的手机号~   人工挑眼都挑花了. 用的IDE是PyCh ...

随机推荐

  1. 单页web应用开发流程

    用循环的视角审视Web应用开发 框定一个一致的SPA图形用户界面(GUI)和模型 将SPA的原则带回服务器端 聚集于对合适的应用进行早期SPA开发[3]  SPA协调的起点是认识到SPA与脚本和网页编 ...

  2. CSS定位深入理解 完全掌握CSS定位 相对定位和绝对定位

    其实前面的标准流和浮动流都很理解,就是定位不太好理解,特别是相对定位和绝对定位,很多刚开始学的同学不好区分.因此这里,小强老师和大家一起分享CSS定位的学习. 通过我们前面的学习,我们网页布局方法: ...

  3. Oracle expdp/impdp导出导入命令及数据库备份(转)

    使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用, ...

  4. 注意:只有xcode5.1创建的项目会自动适配iphone6,iphone6p

    注意:只有xcode5.1创建的项目会自动适配iphone6,iphone6p

  5. 五毛的cocos2d-x学习笔记08-动画

    一个例子就够了,单击文本标签,执行动画.我也是小白,写这个demo的时候遇到了问题,单击文本标签游戏就死掉了.今天为了解决这个问题也是一晚没睡,到学习群里问大神,经过大神的指点解决了问题.原来是Ani ...

  6. PHP系列笔记——Zend_Controller工作流程

    Zend_Controller_Front接收请求,然后调用Zend_Controller_Router_Rewrite来决定哪个控制器被派遣.为了在请求中设置控制器和动作名称,Zend_Contro ...

  7. Labview学习之远程控制VI

    Labview学习之远程控制VI        从LabVIEW 6.1开始,LabVIEW集成了Remote Panels技术,允许用户直接在客户端计算机上打开并操作位于服务器端计算机上的VI的前面 ...

  8. 有意思,搞了这么多年WEB,还是第一次知道这个东西 关键字 前端模板

    有意思,搞了这么多年WEB,还是第一次知道这个东西 关键字 前端模板 jquery-tmpl handlebars 项目中用的是handlebars  jqtmpl配置不成功 不做记载 百度吧 小媳妇 ...

  9. 使用wfastcgi在IIS上部署Python Flask应用

    本文介绍了如何在Windows上部署Python Flask应用,相关环境如下: 操作系统:windows 7 Python:3.4 WFastCGI: 2.2 应用所用到的包版本如下: Flask= ...

  10. zoj 3171 The Hidden 7's

    这道题,我在网上看到两种dp,不过基本原理是一样的,不过感觉还是后面的一种比较巧妙!因为我对动态不是很熟,自能加上一些自己的理解,写上注释. 1) #include <stdio.h> # ...