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的网络编程库Gevent的安装及使用技巧
Jun 24 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
python实现决策树分类算法
Dec 21 Python
Python内置函数reversed()用法分析
Mar 20 Python
对python numpy数组中冒号的使用方法详解
Apr 17 Python
python将一个英文语句以单词为单位逆序排放的方法
Dec 20 Python
pow在python中的含义及用法
Jul 11 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
python爬虫搭配起Bilibili唧唧的流程分析
Dec 01 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/11/25 PHP
PHP SPL标准库中的常用函数介绍
2015/05/11 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
PHP实现多图上传(结合uploadify插件)思路分析
2016/11/30 PHP
js实现iframe动态调整高度的代码
2008/01/06 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
2014/12/29 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
[38:44]DOTA2上海特级锦标赛A组小组赛#2 Secret VS CDEC第二局
2016/02/25 DOTA
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
python文件写入实例分析
2015/04/08 Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
2015/04/08 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
一组SQL面试题
2016/02/15 面试题
南京某公司笔试题
2013/01/27 面试题
领导干部考察材料
2014/02/08 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
千万级用户系统SQL调优实战分享
2022/03/03 MySQL