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实现指定字符串补全空格的方法
Apr 30 Python
Python的pycurl包用法简介
Nov 13 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
使用python实现tcp自动重连
Jul 02 Python
python实现按长宽比缩放图片
Jun 07 Python
Python线程下使用锁的技巧分享
Sep 13 Python
python将txt等文件中的数据读为numpy数组的方法
Dec 22 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
python将YUV420P文件转PNG图片格式的两种方法
Jan 22 Python
Python与C++中梯度方向直方图的实现
Mar 17 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地址引用(php地址引用的效率问题)
2012/03/23 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
2012/08/09 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
JavaScript 数据类型详解
2017/03/13 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
React+EggJs实现断点续传的示例代码
2020/07/07 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
[38:23]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第二场 11.01
2020/11/02 DOTA
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python获取文件扩展名的方法
2015/07/06 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
Python3爬虫学习入门教程
2018/12/11 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
致100米运动员广播稿
2014/02/14 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
商场收银员岗位职责
2015/04/07 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis