Python在近几年迅速咋程序界掀起了不小的波澜,而关于python的第三库也使广大程序员趋之若鹜,今天咱们就由浅入深的探讨一下如何使用python作一个“网络爬虫”来抓取一些页面信息。今天咱们使用的库(包含python自身携带的库和第三库)html
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。python
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议[2] 。Python语法简洁清晰,特点之一是强制用空白符(white space)做为语句缩进。mysql
Python具备丰富和强大的库。它常被昵称为胶水语言,可以把用其余语言制做的各类模块(尤为是C/C++)很轻松地联结在一块儿。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),而后对其中[3] 有特别要求的部分,用更合适的语言改写,好比3D游戏中的图形渲染模块,性能要求特别高,就能够用C/C++重写,然后封装为Python能够调用的扩展类库。须要注意的是在您使用扩展类库时可能须要考虑平台问题,某些可能不提供跨平台的实现。程序员
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更常常的称为网页追逐者),是一种按照必定的规则,自动地抓取万维网信息的程序或者脚本。另一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。正则表达式
URLLIBsql
Python 3 的 urllib 模块是一堆能够处理 URL 的组件集合。若是你有 Python 2 的知识,那么你就会注意到 Python 2 中有 urllib 和 urllib2 两个版本的模块。这些如今都是 Python 3 的 urllib 包的一部分。当前版本的 urllib 包括下面几部分:urllib.request urllib.error urllib.parse urllib.rebotparser。
BeautifulSoup
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,经过解析文档为用户提供须要抓取的数据,由于简单,因此不须要多少代码就能够写出一个完整的应用程序。浏览器
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不须要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup就不能自动识别编码方式了。而后,你仅仅须要说明一下原始编码方式就能够了。Beautiful Soup已成为和lxml、html6lib同样出色的python解释器,为用户灵活地提供不一样的解析策略或强劲的速度。网络
#-*- coding: utf-8 -*- #导入urllib库中的request from urllib import request #使用request的Request方法,括号中的参数为你想爬取的网址地址 req = request.Request("http://www.baidu.com") #使用req的add_header方法向其中添加一些参数以使得你的爬虫看起来像一个普通的HTTP访问,这个你可使用浏览器的开发者工具中查到,例如在谷歌浏览器中,打开你想爬取的网页,按F12,截图以下: ![图片描述][1] req.add_header("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36") #获取所需爬取网站的信息 resp = request.urlopen(req) #打印该信息 print(resp.read().decode("utf-8"))
安装Beautifulsoup
在此我提供使用pip命令行来安装 ,pip install BeautifulSoup.或者能够参考一下博客也可,博客链接:函数
[连接描述][1][1]: http://blog.csdn.net/jenyzhang/article/details/45828481
具体实现(很是简单)工具
#-- coding: utf-8 -#
#引入开发包
from urllib.request import Request
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
#请求URL,并把URL用UTF-8编码
resp = urlopen("https://en.wikipedia.org/wiki/Main_Page").read().decode("utf-8")
#使用BeautifulSoup去解析
soup = BeautifulSoup(resp,"html.parser")
#去获取全部以/wiki/开头的a标签的href属性
listUrls = soup.findAll("a",href=re.compile("^/wiki/"))
for url in listUrls:
#使用正则表达式来筛选出后缀名为.jpg或者.JPG的链接 if not re.search("\.(jpg|JPG)$",url["href"]): #打印所爬取的信息 print(url.get_text(),"<---->","https://en.wikipedia.org",url["href"])
最后附上项目的源码地址,固然其中还有一些关于urllib和beautifusoup 以及如何将信息存储在mysql的联系,你们有兴趣的能够看一下。
连接:http://pan.baidu.com/s/1pLiePCn 密码:mh4t