【Python 实战】Python 采集图书信息
持续创作,加速成长!这是我参与三周年连更的第 7 天.
前言
我们前面更新爬虫实战的一些文章,从今天起,我们重点讲解关于 parsel 解析库的实战技巧,通过实战,我们来学习其强大的功能。
我们先来认识一下什么是 parsel 库。
Parsel 是一个用于解析 JSON 数据的 Python 库。它提供了一个简单易用的 API,可以轻松地从 JSON 文件或字符串中解析数据。可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。功能灵活而又强大。
采集数据
我们上一篇介绍了,如何采集大学教务系统里面的成绩单,把自己的成绩采集下来。今天,我们来采集当当网里面的商品信息。之前,我们基本上都是用正则表达式来获取数据的,今天,我们使用 parsel 方法来获取数据。
发送请求
我们首先确定我们的目标网址,对我们需要获取的数据。这个是我们爬取任何网页都要做的第一步。
我们要把每一个图书的数据获取下来,我们接下来用到开发者工具。我们看图书名字和价格是在什么位置。是不是在网页源代码中。接下来,我们发送请求,获取网页源代码。
我们可以观察到,每一个商品信息都放在<li>
标签里面。我们只要提取<li>
标签里面的内容即可。
我们现在开始写代码。
代码使用requests
库的get()
函数来请求这个 URL,并将结果存储在变量res
中。
获取数据
我们使用 css
方法选择了所有的列表项,并使用 xpath
方法选择了所有包含 .bang_list li
类的列表项。也就是我们上面提到的<li>
标签里面的内容。我们看看效果怎么样。
css
方法用于选择元素的 CSS 样式。在上面的示例中,我们使用 css
方法选择了所有的列表项,并使用 xpath
方法选择了所有包含 .name a::attr(title)
类的列表项。
然后,我们使用 get()
方法获取了列表项中每个元素的 name
属性,以及 star
类中每个元素的 text
属性。
最后,我们使用 get()
方法获取了列表项中每个元素的 price_n
属性,以及 price_r
和 price_s
属性。
保存数据
保存数据就简单了,我们已经练习了很多次。
这段代码首先打开一个名为 data.csv
的文件,并指定使用 a
模式打开文件。然后,使用 csv.DictWriter()
函数创建一个 CSV 写入器,并指定要写入的列名。在这个例子中,我们指定了 fieldnames
参数,它包含了我们要写入的列名。
接下来,我们使用 csv_writer.writeheader()
方法写入列名。这个方法会将列名写入文件的第一行。
最后,我们使用 csv_writer.writerow()
方法写入数据。
我们先写入字典。
这段代码创建了一个字典dit
,其中包含了每个元素的值。然后,它使用csv_writer.writerow()
方法将字典写入 CSV 文件中。
我们可以看到,我们已经把数据获取下来了,我们这里发现了,其 css 语法和我们之前说的一样,这个功能太强大了。
总结
本文主要介绍了 parsel 库的实战技巧,包括如何采集数据、发送请求和获取数据等方面的内容。通过实战,我们可以学习到 parsel 库的强大功能,包括对 HTML 和 XML 的解析、XPath 和 CSS Selector 的使用以及正则表达式提取的功能。
版权声明: 本文为 InfoQ 作者【BROKEN】的原创文章。
原文链接:【http://xie.infoq.cn/article/2679c0716e2d2da1879023576】。文章转载请联系作者。
评论