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自带的http模块详解
Nov 06 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
使用python实现knn算法
Dec 20 Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 Python
详解Python最长公共子串和最长公共子序列的实现
Jul 07 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
浅谈Python中的字符串
Jun 10 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Django前后端分离csrf token获取方式
Dec 25 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 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调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
php查看网页源代码的方法
2015/03/13 PHP
php抽象类用法实例分析
2015/07/07 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
2020/12/10 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
[44:50]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第二局
2016/02/26 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
Python异常处理操作实例详解
2018/08/28 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python绘制股票移动均线的实例
2019/08/24 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
绘儿乐产品官方在线商店:Crayola.com
2019/09/07 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
美德好少年事迹材料
2014/01/19 职场文书
员工考核管理制度
2014/02/02 职场文书
连锁超市项目计划书
2014/09/15 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
初中班主任心得体会
2016/01/07 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL