Python实现抓取页面上链接的简单爬虫分享


Posted in Python onJanuary 21, 2015

除了C/C++以外,我也接触过不少流行的语言,PHP、java、javascript、python,其中python可以说是操作起来最方便,缺点最少的语言了。

前几天想写爬虫,后来跟朋友商量了一下,决定过几天再一起写。爬虫里重要的一部分是抓取页面中的链接,我在这里简单的实现一下。

首先我们需要用到一个开源的模块,requests。这不是python自带的模块,需要从网上下载、解压与安装:

$ curl -OL https://github.com/kennethreitz/requests/zipball/master

$ python setup.py install

windows用户直接点击下载。解压后再本地使用命令python setup.py install安装即可。 https://github.com/kennethreitz/requests/zipball/master

这个模块的文档我也正在慢慢翻译,翻译完了就给大家传上来(英文版先发在附件里)。就像它的说明里面说的那样,built for human beings,为人类而设计。使用它很方便,自己看文档。最简单的,requests.get()就是发送一个get请求。

代码如下:

# coding:utf-8

import re

import requests
# 获取网页内容

r = requests.get('http://www.163.com')

data = r.text
# 利用正则查找所有连接

link_list =re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" ,data)

for url in link_list:

    print url

首先import进re和requests模块,re模块是使用正则表达式的模块。

data = requests.get('http://www.163.com'),向网易首页提交get请求,得到一个requests对象r,r.text就是获得的网页源代码,保存在字符串data中。

再利用正则查找data中所有的链接,我的正则写的比较粗糙,直接把href=""或href=''之间的信息获取到,这就是我们要的链接信息。

re.findall返回的是一个列表,用for循环遍历列表并输出:

Python实现抓取页面上链接的简单爬虫分享

这是我获取到的所有连接的一部分。

上面是获取网站里所有链接的一个简单的实现,没有处理任何异常,没有考虑到超链接的类型,代码仅供参考。requests模块文档见附件。

Python 相关文章推荐
使用cx_freeze把python打包exe示例
Jan 24 Python
Python学习笔记整理3之输入输出、python eval函数
Dec 14 Python
python中os模块详解
Oct 14 Python
python正则分析nginx的访问日志
Jan 17 Python
Python实现字典去除重复的方法示例
Jul 31 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
超实用的 30 段 Python 案例
Oct 10 Python
python求质数列表的例子
Nov 24 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
python中查看.db文件中表格的名字及表格中的字段操作
Jul 07 Python
方法汇总:Python 安装第三方库常用
Apr 26 Python
利用Python实时获取steam特惠游戏数据
Jun 25 Python
Python中多线程及程序锁浅析
Jan 21 #Python
Python实现的多线程端口扫描工具分享
Jan 21 #Python
Python中的pprint折腾记
Jan 21 #Python
通过C++学习Python
Jan 20 #Python
python入门之语句(if语句、while语句、for语句)
Jan 19 #Python
Python实现删除Android工程中的冗余字符串
Jan 19 #Python
Python中字典和JSON互转操作实例
Jan 19 #Python
You might like
PHP分页显示制作详细讲解
2006/10/09 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
PHP基本语法实例总结
2016/09/09 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
js电信网通双线自动选择技巧
2008/11/18 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
JQuery跳出each循环的方法
2015/04/16 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
node中koa中间件机制详解
2017/08/22 Javascript
jQuery实现为动态添加的元素绑定事件实例分析
2018/09/07 jQuery
JavaScript数组特性与实践应用深入详解
2018/12/30 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
VUE解决 v-html不能触发点击事件的问题
2019/10/28 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
python如何将两个txt文件内容合并
2019/10/18 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
Python创建自己的加密货币的示例
2021/03/01 Python
HTML5 Canvas实现平移/放缩/旋转deom示例(附截图)
2013/07/04 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
Eclipse面试题
2014/03/22 面试题
在校学生职业规划范文
2014/01/08 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
思想道德自我评价2015
2015/03/09 职场文书
2016年入党心得体会范文
2016/01/23 职场文书