ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_1.5 Hello,Spider!

网友投稿 109 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第1章,第5节,吕云翔、张扬和韩延刚等编著。

1.5 Hello,Spider!

掌握编写 Python 网络爬虫所需的基础知识后,就可以开始编写第一个爬虫程序了。首 先来分析一个非常简单的爬虫,并由此展开进一步讨论。

1.5.1 第一个爬虫程序

在各大编程语言中,初学者要编写的第一个简单程序一般就是 “Hello,World!”, 即通过 程序在屏幕上输出“Hello,World!” 。 在 Python 中,只需一行代码就可以做到。这里就将该 爬虫称为 “HelloSpider”, 见例1-1。

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_1.5 Hello,Spider!

【例1-1】 HelloSpider.py, 一个最简单的 Python 网络爬虫。

import lxml.html,requests

url='https://www.python.org/dev/peps/pep-0020/'

xpath='//*[@id="the-zen-of-python"]/pre/text()'

res =requests.get(url)

ht=lxml.html.fromstring(res.text)

text =ht.xpath(xpath)

print('Hello,\n'+''.join(text))

执行这个脚本。在终端中运行如下命令(也可以直接在IDE 中单击“运行”按钮):

python HelloSpider.py

很快就能看到如下输出:

Hello:

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity,refuse the temptation to guess.

There should be one--and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right*now.

If the implementation is hard to explain,it's a bad idea.

If the implementation is easy to explain,it may be a good idea.

Namespaces are one honking great idea --let's do more of those!

不错,这正是 “Python 之禅”的内容,以上程序完成了一个网络爬虫程序最普遍的流 程:①访问站点;②定位所需的信息;③得到并处理信息。接下来不妨看看每一行代码 都做了什么。

import lxml.html,requests

上述代码使用 import 导入了两个模块,分别是 lxml 库中的 html 以及 Python 中著名的 Requests 库 。Ixml 是用于解析XML 和 HTML 的工具,可以使用 XPath 和 CSs 来定位元素, 而 Requests 则是著名的 Python HTTP库,其口号是“给人类用的 HTTP”。相比于 Python 自 带的 urllib 库而言,Requests 有着不少优点,使用起来十分简单,接口设计也非常合理。实 际上,对 Python 比较熟悉的话就会知道,在 Python 2 中一度存在着 urllib,urllib2,urllib3, httplib,httplib2 等一堆让人易于混淆的库,可能官方也察觉到了这个缺点, Python 3中的新标 准库中 urllib 就比 Python2 好用一些。曾有人在网上问道 “urllib,urllib2,urllib3 的区别是什 么,怎么用”,有人回答“为什么不去用Requests 呢?”,可见 Requests 的确有着十分突出的 优点。同时也建议读者,尤其是刚刚接触网络爬虫的人采用Requests, 可谓省时省力。

url='https://www.python.org/dev/peps/pep-0020/'

xpath='//*[@id="the-zen-of-python"]/pre/text()'

上述代码定义了两个变量。Python 不需要声明变量的类型, url 和 xpath 会自动被识别 为字符串类型。url 是一个网页的链接,可以直接在浏览器中打开,页面中包含了 “Python 之禅”的文本信息。xpath 变量则是一个 XPath 路径表达式。刚才已提到,lxml 库可以使 用 XPath 来定位元素。当然,定位网页中元素的方法不止 XPath 一种,后面章节会介绍更 多的定位方法。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Python 编程与应用实践》_成为Python大佬_9.1 线性表
下一篇:打开《Python 可视化数据分析》_学会挖掘大数据的价值_5.2 绘制线形图
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×