写在前面
爬虫!爬虫就像是一只聪明的小蜘蛛,可以在互联网上自由爬行,抓取我们想要的数据。但是如何写一个自己的爬虫呢?这个问题应该是很多初学者的困惑,市面上很多书籍写的比较深入不适合初学者理解。今天我们会以最简单的方式来说明如何从零开始写一个爬虫。
你需要具备的知识
-
可以写简单的 python 代码; -
知道依赖包的运用; -
了解基础的html;
环境依赖
python 3.8+
我们的爬虫要做什么?
这里有一个简单的网页 https://quotes.toscrape.com/
,网页中是一个名人名言列表,如下图所示。我们将使用纯python编写一个简单的爬虫,爬取其中的名人名言并打印出来。
编写爬虫
这一步我们需要查看网页的源代码然后根据html编写相应的解析代码。
选择‘查看页面源代码’,进入源代码页面,如下图。找到31、32行就是我们想要抓取的内容。
2. 编写爬虫代码
根据源代码编写对应的的解析函数,创建爬虫文件。
文件名称:client.py
代码如下:
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
"""
@File : client.py
@License : (C)Copyright 2020-2021
-------------------------------------
@Modify Time: 2023/10/9 17:24
@Author :
@Version : 1.0
@Description:
"""
import urllib.request
import re
def get_quotes(url):
# 发送HTTP请求获取页面内容
response = urllib.request.urlopen(url)
html_content = response.read().decode('utf-8')
# 使用正则表达式提取名言信息
pattern = r'<span class="text" itemprop="text">(.*?)</span>.*?<small class="author" itemprop="author">(.*?)</small>'
matches = re.findall(pattern, html_content, re.DOTALL)
# 打印名言信息
for match in matches:
quote = match[0]
author = match[1]
print(f'名言: {quote}n作者: {author}n')
url = 'https://quotes.toscrape.com/'
get_quotes(url)
代码解读:
这段代码使用urllib.request.urlopen()函数发送HTTP请求并获取页面内容。然后,使用正则表达式从页面中提取名言的内容和作者。最后,调用get_quotes()函数打印名人名言信息。
验证爬虫代码
运行以上代码,控制台就会打印网站中的的名人名言,如下图所示。
结语
至此,我们就从零开始完成了一个爬虫的编写,希望会对你有所帮助。请注意,这只是一个简单的示例,可能无法处理所有页面的变化。在实际的爬虫项目中,可能需要更复杂的处理逻辑和更健壮的错误处理。此外,豆瓣网站有可能会对频繁的爬取请求进行限制,所以请确保遵守网站的使用规则。
未来你可以做什么
正如结语中所说,这只是一个简单的示例。生产环境中你会遇到更复杂的情况,此时我们需要借助于一些已有的爬虫框架,例如基于python的scrapy。
原文始发于微信公众号(harvey的网络日志):python如何从零写一个爬虫
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/188281.html