您的位置:首页 > 理论基础 > 计算机网络

5分钟入门网络爬虫 - 原来可以这么简单易懂

2017-11-16 04:55 816 查看
爬虫在大数据时代占据了重要的位置,在网上有大量的公开数据可以轻松获取。

爬虫入门其实非常简单,就算你是编程小白,也可以轻松爬下一些网站。下面就以爬取笔者的个人博客网站(大数据分析@唐松)为例,教大家学会一个简单的爬虫。。一方面,由于这个网站的设计和框架不会更改,因此本书的网络爬虫代码可以一直使用; 另一方面,由于这个网站由笔者拥有,因此避免了一些法律上的风险。

如果你有已经安装了python3,pip,可以跳过下面对python,pip安装的介绍。

安装python3, pip, beautifulsoup

第一步:Python3安装,请自行百度 Anaconda。这里推荐使用 Anaconda 的 Python 科学计算环境。只需像普通软件一样安装好 Anaconda,就可以把 Python 的环境变量、解释器、开发环境等安装在计算机中。

第二步:安装pip,pip是按照python各种包的工具,有了它安装python的各种包都很方便。如果你安装了 Anaconda,那么恭喜你,它已经自带了 pip 不用单独安装了。

如果不使用 Anaconda 安装 Python,需要单独装 pip,可以借鉴这篇文章:https://www.tuicool.com/articles/eiM3Er3/

第三步:有了pip,就可以安装beautifulsoup了。这个包可以很好地从网页代码中提取想要的数据。安装方法: 在 terminal (MacOS) 或是 cmd (Windows)中键入

pip install bs4


第四步:选一个python编译器来跑程序。为了代码的调试方便,可以直接用 Anaconda 中的 jupyter。使用方法:在 terminal (MacOS) 或是 cmd (Windows)中键入

jupyter notebook


第一步:获取页面

#!/usr/bin/python
# coding: utf-8

import requests
link = "http://www.santostang.com/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers= headers

print (r.text)


上述代码获取了博客首页的网页HTML代码。首先import requests,使用requests.get(link, headers=headers)获取了网页。值得注意的是:

用requests的headers可以伪装成浏览器访问

r是requests的Response回复对象,我们从中可以获取我们想要的信息。r.text是获取的网页内容代码。

运行完上述代码后,我们得到的结果是:



第二步:提取需要的数据

#!/usr/bin/python
# coding: utf-8

import requests
from bs4 import BeautifulSoup     #从bs4这个库中导入BeautifulSoup

link = "http://www.santostang.com/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers= headers)

soup = BeautifulSoup(r.text, "lxml")      #使用BeautifulSoup解析这段代码
title = soup.find("h1", class_="post-title").a.text.strip()
print (title)


在获取到整个页面的HTML代码后,我们需要从整个网页中提取第一篇文章的标题。

这里用到beautifulsoup这个库了对爬下来的页面进行解析,首先我们需要导入这个库,from bs4 import BeautifulSoup。然后,把HTML代码转化为soup对象,接下来就是用soup.find(“h1”,class_=”post-title”).a.text.strip(),得到第一篇文章的标题,并且打印出来。

对初学者来说,beautifulsoup从网页中提取需要的数据,更加简单易用。

那么,我们是怎么从那么长的代码中准确找到标题的位置呢?

这里就要隆重介绍Chrome浏览器的“检查(审查元素)”功能了。下面介绍一下找到需要元素的步骤:

步骤一:使用Chrome浏览器,打开博客首页http://www.santostang.com。右键网页页面,在弹出的对话框中,点击“检查”选项。



步骤二:出现如下图所示的审查元素功能。点击左上角的鼠标键,然后在页面上点击想要的数据,下面的Elements就会出现相应的code所在的地方,就定位到你想要的元素了。



步骤三:在代码中找到标蓝色的地方,为”h1 class=”post-title”> a>echarts学习笔记(2) – 同一页面多图表/a>”。于是,我们可以用soup.find(“h1”,class_=”post-title”).a.text.strip()提取出该博文的标题了。

第三步:储存数据

import requests
from bs4 import BeautifulSoup   #从bs4这个库中导入BeautifulSoup

link = "http://www.santostang.com/"
headers = {'User-Agent' : 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
r = requests.get(link, headers= headers)

soup = BeautifulSoup(r.text, "lxml")   #使用BeautifulSoup解析这段代码
title = soup.find("h1", class_="post-title").a.text.strip()
print (title)

with open('title.txt', "a+") as f:
f.write(title)
f.close()


储存到本地的txt文件也非常简单,在第二步的基础上,加上三行代码,就可以把这个字符串,保存在text里,并存到本地。txt文件地址应该和你的python文件在同一文件夹。

返回文件夹中,打开’
4000
title.txt’文件,可以看到里面的内容,如下图所示:



一波硬广:

本文节选自图书《Python 网络爬虫:从入门到实践》第二章:编写你的第一个爬虫,由机械工业出版社出版。

本书主要分为三部分:基础部分(第1~6章)、进阶部分(第7~12章)和项目实践部分(第13~16章),以此来针对不同类型的读者。如果你是Python爬虫的初学者,那么可以先学习基础部分,这部分每一章的最后都有自我实践题,读者可以通过实践题熟悉编写Python爬虫代码。如果你已经对Python爬虫有所了解,但是在实践中遇到了各种问题,那么可以直接学习进阶部分,这部分为你在爬虫实践中遇到的问题提供了解决方案。本书最后的项目实践部分是让你在学习Python爬虫后,可以通过在真实网站中练习来消化和吸收Python爬虫的知识。

这本书相对网络上的学习比较系统化,希望大家能支持!

京东链接《Python网络爬虫从入门到实践》(唐松,陈智铨)【摘要 书评 试读】- 京东图书

当当链接《Python网络爬虫从入门到实践》(唐松 陈智铨)【简介书评在线阅读】 - 当当图书
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息