Python之Web Crawler

一,前言
对于软件的安装包建议直接到官网进行下载(下载破解软件的除外),这样可以避免安装一些被捆绑的插件。在这个Project中,只需安装俩个软件,一个是Python,另一个是PyCharm( Python IDE,术语上称为集成开发环境,说白就是一个有运行和调试功能的语言编辑器)

Python官网地址:https://www.python.org/
PyCharm官网地址:https://www.jetbrains.com/pycharm/

至于选择 Python 2.x 还是Python 3.x ,就要根据教程所用的进行安装,等上手之后再来比较版本之间的差异。依然值得一提的是,print 语法在Python 3.x 中有一个小小的改动:Python 2.x中的print语句被Python 3.x中的print()函数取代,意味着在Python 3.x中必须用括号将需要输出的对象括起来。

举个简单的栗子:在Python 2.x中可以输入print “Hello World”print ‘Hello World’进行打印(单引号或双引号同样生效),但在Python 3.x中则要把打印的内容括起来print( “Hello World”)print( ‘Hello World’)。

废话不多说,立马进入今天的主题。

二,环境搭建

(1)安装完Python后,打开python.exe,运行表达式 3 + 7 ,如果没报错,并有结果输出,说明Python安装且运行成功。


Python之Web Crawler_第1张图片

(2)如果是Window安装的用户,也可以在cmd命令模式下运行Python,前提是先在电脑添加运行路径。计算机—>属性—>高级系统配置—>“环境变量”对话框的“系统变量”中选取“Path”,然后单击“编辑”,如下图所示:


Python之Web Crawler_第2张图片

在变量值的最后添加“;”,并将Python所在的路径添加到分号的后面。例如,在我的电脑里,添加值如下 ;D:\python\Python3.6.0 ,点击确定完成设置。

打开cmd,输入python+回车,出现以下界面,此时已设置完成。


Python之Web Crawler_第3张图片

(3)从上面可以看出,无论是从python.exe打开,还是从cmd打开Python,编辑界面都是非常简陋的,所以可以用到Python的编辑神器--PyCharm。安装过程不在这里细说,主要看一下它的开发界面,作为一个可以运行调试的编辑器,主要由3大部分组成,1:项目组织结构 ;2:Code Editor 主界面;3:Debug调试信息。

整个页面看起来是非常简洁美观的:


Python之Web Crawler_第4张图片

与此同时,根据每位用户的使用习惯,还可以在菜单File—>Settings选项卡中进行个性化设置,如代码颜色和大小,如下图:


Python之Web Crawler_第5张图片

编译环境介绍完了,下面我们来一点干货。

三,Web Crawler

Web Crawler翻译成过来就是网络爬虫,可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。
听起来有点像Google搜索引擎吧,确实有点像,但不完全是。Google有一整套不断抓取网络信息的爬虫工具,可以发现新的内容(跟踪不断更新或添加新内容的网站),爬虫是搜索引擎中其中一个重要组成部分。
下面让我们一起来see see 爬虫是怎么抓取网站资源的。

主要代码如下:


import requests
from bs4 import BeautifulSoup

def spider(max_pages):
page = 1
while page <= max_pages:
url = 'https://www.guazi.com/cq/buy/h' + str(page)
source_code = requests.get(url)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, "html.parser")

    for link in soup.findAll('a', {'target': '_blank'}):
        href = "https://www.guazi.com" + link.get('href')
        title = link.string

        if title:      
            print(href)
            print(title)
            fw = open("web.txt", "a")
            fw.write(href + '\n')
            fw.write(title + '\n')
            fw.close()

    page += 1

spider(1) #running this program

第一步:确定目标

在这里,我抓的网站是”瓜子二手车“,不得吐槽一下,国内的网页跟国外相比,排版非常乱。

分析一下我们的代码,import的作用就像是c语言中的include函数,它将需要的功能模块引入进来。
接下来定义一个spider()函数进行网页内容的抓取。
一般情况下浏览器拿到了网页原始码之后,会先解析,然后把画面显示成我们平常看见的样子。
但这边我们并不做显示,只想分析原始码内的内容,所以用Beautifulsoup来分析刚刚抓到的内容,在BeautifulSoup()的建构式第二个参数放入'html.parser'让它来帮助我们解析。

第二步:分析页面结构

在”瓜子二手车“网页单击右键,选择查看网页源代码分析:


郑州二手车
上海二手车
沈阳二手车
昆明二手车
北京二手车
南宁二手车

我们发现,每个网页的标题信息皆放在target="_blank"的a标签里。我们这里使用到findAll()方法来操作BeautifulSoup对象,之后将网页的地址进行拼接。


for link in soup.findAll('a', {'target': '_blank'}):
href = "https://www.guazi.com" + link.get('href')

最后关于文件的读写操作相信大家都比较熟悉,参数"a"表示的是对文档内容的追加:


fw = open("web.txt", "a")
fw.write(href + '\n')
fw.write(title + '\n')
fw.close()

下面来看一下我们的运行结果(截取部分):

Python之Web Crawler_第6张图片
运行结果.png

当然运行结果也导入到我们的web.txt文档中,如果你发现文档中的格式出现乱码,不要紧张,在pycharm的底部有一个file encoding选项,将编码格式UTF-8改成gb2312即可,然后在弹出来的对话框单击reload,此时,页面就能正常显示中文字符了。

小结

这篇文章实现了最简单的爬虫机制,以及BeautifulSoup的使用,最后将结果输送入到文件中。麻雀虽小,五脏俱全,这个程序功能简单,但算是一个完整的爬虫程序。

之后,本人将继续介绍怎么在音乐,视频网站下载音乐和视频,如何将网页有用的数据抓取下来导入到数据库当中进行二次开发利用。

路漫漫其修远兮,吾将上下而求索。

你可能感兴趣的:(Python之Web Crawler)