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 相关文章推荐
详解Golang 与python中的字符串反转
Jul 21 Python
apache部署python程序出现503错误的解决方法
Jul 24 Python
名片管理系统python版
Jan 11 Python
解决pip install的时候报错timed out的问题
Jun 12 Python
python 剪切移动文件的实现代码
Aug 02 Python
python得到电脑的开机时间方法
Oct 15 Python
numpy中的ndarray方法和属性详解
May 27 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
python实现图像外边界跟踪操作
Jul 13 Python
python递归函数用法详解
Oct 26 Python
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
May 24 Python
Python中使用ipython的详细教程
Jun 22 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
Session保存到数据库的php类分享
2011/10/24 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
php二维码生成
2015/10/19 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
Android中资源文件(非代码部分)的使用概览
2012/12/18 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
HTML中使背景图片自适应浏览器大小实例详解
2017/04/06 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
vue中遇到的坑之变化检测问题(数组相关)
2017/10/13 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
学习python的几条建议分享
2013/02/10 Python
详解Python使用simplejson模块解析JSON的方法
2016/03/24 Python
python检测IP地址变化并触发事件
2018/12/26 Python
python elasticsearch环境搭建详解
2019/09/02 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
抽象方法、抽象类怎样声明
2014/10/25 面试题
中专毕业生自我鉴定
2013/11/21 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
公司节能减排倡议书
2014/05/14 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
陕西导游词
2015/02/04 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
超级礼物观后感
2015/06/15 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
JavaScript中document.activeELement焦点元素介绍
2021/11/27 Javascript