为数据科学家准备的六条关键命令

欢迎关注 “小白玩转Python”,发现更多 “有趣”

引言

网络爬虫是一项十分有趣且富有挑战性和回报性的工作。只要遵循一些规则,几乎可以抓取到任何你想要的东西。之所以要遵循一些规则,是因为爬虫的行为可能会影响到抓取的网站,所以要牢记这一点哦。对于数据科学家和研究人员而言,你拥有的数据越多,你的估计就可能越准确。

本文我们将用到requests和Beautifulsoup这两个库,requests库读取URL,BeautifulSoup库从已解析的HTML或XML文档中创建数据结构。

可以通过以下命令导入这两个库:

import requests
from bs4 import BeautifulSoup

下面让我们看一下这六条关键命令:

requests.get():

Get() 函数非常简单,因为它实际上是“下载”或“读取”我们获取的URL。它基本上是从网站上获取html(或xml)并将其导入程序中,其用法如下:

html_doc = requests.get(url)

然后,我们可以将获取的html文档传递到BeautifulSoup提供的解析中,如下所示:

soup = BeautifulSoup(html_doc, 'html.parser')

find()

现在已经获得了网站的数据,让我们尝试探索一下吧。在遍历从HTML或XML文件时,可能只希望获得特定标记的一个结果时,就可以使用find()方法。假设要从下面这个网站获得第一个标签为'a'的条目(https://www.crummy.com/software

/BeautifulSoup/bs4/doc/),方法如下所示:

soup.a
# <a class="sister" href="http://example.com/elsie" 
id="link1">Elsie</a>

find_all()

现在已经找到了标记为'a'的标签,我们也可以获得所有标记为'a'的标签:

soup.find_all('a')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

str.strip()

当直接从互联网获取数据时,数据的格式通常很糟糕,带有大量的空格。strip函数就可以帮我们去掉这些空格。这个函数本身并不是BeautifulSoup的原生函数,但是它仍然是一个非常重要的函数。可以这样使用它:

>>> ‘ a’.strip()
'a'

当然也可以使用lstrip或rstrip,它们的作用显而易见:

>>> ‘     a   ’.lstrip()
'a    '

get_text()

下载完所有内容后,我们只想阅读原始文本,只需按以下步骤从对象中获取它即可:

print(soup.get_text())

diagnose()

开始使用BeautifulSoup后,可能想了解更多有关它的工作原理的信息,则diagnose()函数非常有用,因为通过将soup对象传递给它,该函数将准确打印出正在执行的操作。

from bs4.diagnose import diagnose
with open("bad.html") as fp:
    data = fp.read()
diagnose(data)


# Diagnostic running on Beautiful Soup 4.2.0
# Python version 2.7.3 (default, Aug  1 2012, 05:16:07)
# I noticed that html5lib is not installed. Installing it may help.
# Found lxml version 2.3.2.0
#
# Trying to parse your data with html.parser
# Here's what html.parser did with the document:
# ...

结束语

探索的越多就会发现越方便的工具,网络爬虫从来不是一件容易的事情。花费一些精力才能真正从网站中爬取数据。合理使用上面的六条命令,将会使数据获取的过程更加方便快捷。

·  END  ·

HAPPY LIFE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值