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 相关文章推荐
pygame学习笔记(5):游戏精灵
Apr 15 Python
对python中return和print的一些理解
Aug 18 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
python机器学习理论与实战(二)决策树
Jan 19 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
Aug 09 Python
jenkins配置python脚本定时任务过程图解
Oct 29 Python
基于Python计算圆周率pi代码实例
Mar 25 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
使用python对excel表格处理的一些小功能
Jan 25 Python
Python Pandas常用函数方法总结
Jun 15 Python
7个关于Python的经典基础案例
Nov 07 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 array_multisort()函数的使用札记
2011/07/03 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
PHP防止图片盗用(盗链)的方法小结
2016/11/11 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
图片旋转、鼠标滚轮缩放、镜像、切换图片js代码
2020/12/13 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
详解Python编程中time模块的使用
2015/11/20 Python
python 实现图片旋转 上下左右 180度旋转的示例
2019/01/24 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
数据库笔试题
2013/05/09 面试题
加工操作管理制度
2014/01/19 职场文书
《燕子》教学反思
2014/02/18 职场文书
总经理的岗位职责
2014/02/23 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
护士医德医风自我评价
2014/09/15 职场文书
名人演讲稿范文
2014/09/16 职场文书
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android