写在前面爬虫!爬虫就像是一只聪明的小蜘蛛,可以在互联网上自由爬行,抓取我们想要的数据。但是如何写一个自己的爬虫呢?这个问题应该是很多初学者的困惑,市面上很多书籍写的比较深入不适合初学者理解。今天我们会以最简单的方式来说明如何从零开始写一个爬虫。 你需要具备的知识
环境依赖 python 3.8 我们的爬虫要做什么?这里有一个简单的网页 https://quotes./ ,网页中是一个名人名言列表,如下图所示。我们将使用纯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./' get_quotes(url)
代码解读: 这段代码使用urllib.request.urlopen()函数发送HTTP请求并获取页面内容。然后,使用正则表达式从页面中提取名言的内容和作者。最后,调用get_quotes()函数打印名人名言信息。
验证爬虫代码运行以上代码,控制台就会打印网站中的的名人名言,如下图所示。 结语至此,我们就从零开始完成了一个爬虫的编写,希望会对你有所帮助。请注意,这只是一个简单的示例,可能无法处理所有页面的变化。在实际的爬虫项目中,可能需要更复杂的处理逻辑和更健壮的错误处理。此外,豆瓣网站有可能会对频繁的爬取请求进行限制,所以请确保遵守网站的使用规则。 未来你可以做什么正如结语中所说,这只是一个简单的示例。生产环境中你会遇到更复杂的情况,此时我们需要借助于一些已有的爬虫框架,例如基于python的scrapy。
|