分享

python如何从零写一个爬虫

 gfergfer 2023-11-06 发布于辽宁

写在前面

爬虫!爬虫就像是一只聪明的小蜘蛛,可以在互联网上自由爬行,抓取我们想要的数据。但是如何写一个自己的爬虫呢?这个问题应该是很多初学者的困惑,市面上很多书籍写的比较深入不适合初学者理解。今天我们会以最简单的方式来说明如何从零开始写一个爬虫。

你需要具备的知识

  1. 可以写简单的 python 代码;
  2. 知道依赖包的运用;
  3. 了解基础的html;

环境依赖
python 3.8

我们的爬虫要做什么?

这里有一个简单的网页 https://quotes./ ,网页中是一个名人名言列表,如下图所示。我们将使用纯python编写一个简单的爬虫,爬取其中的名人名言并打印出来。

图片

编写爬虫

这一步我们需要查看网页的源代码然后根据html编写相应的解析代码。

  1. 查看网页源码

    在网页的空白位置点击鼠标右键,弹出以下菜单。

    图片

选择'查看页面源代码’,进入源代码页面,如下图。找到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。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多