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 相关文章推荐
python实现批量转换文件编码(批转换编码示例)
Jan 23 Python
Python单链表的简单实现方法
Sep 23 Python
举例讲解Python设计模式编程中对抽象工厂模式的运用
Mar 02 Python
python妙用之编码的转换详解
Apr 21 Python
python绘制双柱形图代码实例
Dec 14 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
Python贪心算法实例小结
Apr 22 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
Feb 11 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
python 如何引入协程和原理分析
Nov 30 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
php session 预定义数组
2009/03/16 PHP
ThinkPHP自动完成中使用函数与回调方法实例
2014/11/29 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
PHP实现发送微博消息功能完整示例
2019/12/04 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
浅析上传头像示例及其注意事项
2016/12/14 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
JS实现电话号码的字母组合算法示例
2019/02/26 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
Flask实现图片的上传、下载及展示示例代码
2018/08/03 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
解决django model修改添加字段报错的问题
2019/11/18 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
计算机系本科生求职信
2014/05/31 职场文书
通知怎么写?
2019/04/17 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
MySQL约束超详解
2021/09/04 MySQL
JavaScript原型链详解
2021/11/07 Javascript
HTML中的表格元素介绍
2022/02/28 HTML / CSS
Golang入门之计时器
2022/05/04 Golang