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 14 Python
python解析中国天气网的天气数据
Mar 21 Python
用实例分析Python中method的参数传递过程
Apr 02 Python
Python制作简单的网页爬虫
Nov 22 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
Jul 13 Python
python读取文件名并改名字的实例
Jan 07 Python
python 通过麦克风录音 生成wav文件的方法
Jan 09 Python
python 变量初始化空列表的例子
Nov 28 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
Python数据分析入门之数据读取与存储
May 13 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发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
解析dedeCMS验证码的实现代码
2013/06/07 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
自动生成文章摘要的代码[JavaScript 版本]
2007/03/20 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
jackson解析json字符串,首字母大写会自动转为小写的方法
2017/12/22 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
Python写的服务监控程序实例
2015/01/31 Python
在Python中进行自动化单元测试的教程
2015/04/15 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
快速解决docker-py api版本不兼容的问题
2019/08/30 Python
解决 jupyter notebook 回车换两行问题
2020/04/15 Python
Python通过format函数格式化显示值
2020/10/17 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
物理学专业自荐信
2014/06/11 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
长城导游词300字
2015/01/30 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server