Python 简单爬虫程序及其工作原理

news/2024/7/19 11:58:29 标签: python, 爬虫, 开发语言

前言

网络中包含大量的数据,这些数据对于我们来说是非常有价值的,因此编写一个爬虫程序,自动从网页中获取所需的数据,对于信息收集和分析是非常有帮助的。Python 是一种高效而灵活的编程语言,它提供了强大的库和框架来编写爬虫程序。

工作原理

一个简单的爬虫程序的工作原理通常包括以下几个步骤:

发送请求:使用 Python 的 requests 库来发送 HTTP 请求并获取网页的响应。这里可以使用 get() 或 post() 方法,根据需要传递参数和头部信息以获取所需的网页内容。

python">import requests

proxy = {
    'http': 'http://127.0.0.1:8080',  # 替换为你的代理IP地址和端口号
    'https': 'http://127.0.0.1:8080'  # 替换为你的代理IP地址和端口号
}

url = 'https://www.example.com'  # 替换为你要访问的网址

response = requests.get(url, proxies=proxy)

print(response.text)

解析页面:得到网页的内容后,爬虫程序需要从中提取所需的数据。这可以通过使用 Python 的库来解析 HTML 或 XML。常用的库包括 BeautifulSoup 和 lxml,它们提供了遍历和搜索网页结构的功能,以便于提取出所需的数据。

python">import requests
from bs4 import BeautifulSoup

url = 'https://www.example.com'  # 替换为你要解析的网址

# 发送请求并获取页面内容
response = requests.get(url)
html = response.text

# 使用BeautifulSoup解析页面
soup = BeautifulSoup(html, 'html.parser')

# 示例:提取页面标题和第一个段落的文本
title = soup.title.text
paragraph = soup.find('p').text

# 输出结果
print('标题:', title)
print('段落:', paragraph)

存储数据:获取所需的数据后,爬虫程序通常需要将其存储起来以备后续使用。可以将数据保存在文件中,或将其存储在数据库中。Python 中的 sqlite3 模块提供了连接和操作 SQLite 数据库的功能。

python">import sqlite3

# 连接到数据库
conn = sqlite3.connect('data.db')

# 创建表
conn.execute('CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY, name TEXT, age INT)')

# 插入数据
conn.execute('INSERT INTO users (id, name, age) VALUES (1, "John", 25)')

# 查询数据
cursor = conn.execute('SELECT * FROM users')
for row in cursor:
    print(row)

# 关闭数据库连接
conn.close()

循环遍历:如果需要爬取多个网页的数据,爬虫程序可以使用循环来遍历不同的网页并重复上述步骤。

python">fruits = ['apple', 'banana', 'orange']

for fruit in fruits:
    print(fruit)

示例程序

下面是一个使用 Python 编写的简单爬虫程序的示例,该程序通过爬取百度新闻页面并提取新闻标题和链接来演示爬虫的基本流程。

python">import requests
from bs4 import BeautifulSoup

def get_page(url):
    response = requests.get(url)
    return response.text

def get_links(html):
    soup = BeautifulSoup(html, 'html.parser')
    links = []
    for link in soup.find_all('a', {'class': 'title-link'}):
        links.append({
            'title': link.text,
            'url': link['href']
        })
    return links

def main():
    url = 'https://news.baidu.com/'
    html = get_page(url)
    links = get_links(html)

    for link in links:
        print(link['title'], link['url'])

if __name__ == '__main__':
    main()

上述代码中,首先使用 `get_page` 函数获取百度新闻的网页内容,然后使用 `get_links` 函数从网页内容中提取新闻标题和链接。最后,在 `main` 函数中将提取到的新闻标题和链接打印出来。

总结

简单的爬虫程序可以帮助我们从网页中自动获取所需的数据,避免了手动复制粘贴的繁琐工作。Python 提供了强大的库和框架来编写爬虫程序,如 requests、BeautifulSoup 等。在编写爬虫程序时,我们需要遵守网站的爬虫规则,并尊重网站的隐私和使用条款。爬虫程序不仅可以用来抓取网页数据,还可以用来监控网站的变化、分析竞争对手等。在使用爬虫程序时,我们需要注意合法使用,并且对不能公开的数据要有尊重和保护的意识。


http://www.niftyadmin.cn/n/5305791.html

相关文章

案例分享:Qt多国语言输入法软键盘

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135346374 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

大数据毕业设计:租房推荐系统 python 租房大数据 爬虫+可视化大屏 计算机毕业设计(附源码+文档)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

简易留言板功能

在Web开发中,留言板是一个常见的功能,它允许用户在网站上留下他们的信息或反馈。虽然现在有很多现成的留言板解决方案,但了解如何从头开始实现它仍然很有价值。本文将引导您逐步实现一个简易的留言板功能,只使用JavaScript、HTML和…

Unity3D DOTS如何基于ECS的骨骼动画播放与切换 详解

前言 Unity3D DOTS(Data-Oriented Technology Stack)是Unity引擎的一套新的技术堆栈,旨在优化游戏的性能和可伸缩性。其中,ECS(Entity Component System)是一种新的编程模型,用于处理游戏中的实…

java基础之---动态代理

1、代理是什么? 在不改变源代码的情况下,对类进行了功能等扩展。在代理类的前后方法添加任何你想要添加的内容。 2、静态代理跟动态代理区别 静态代理是在编译期确定。 动态代理需要在运行期确定的。反射是动态代理的一种。经常被用在框架中&#xff…

MyBatis自定义类型处理器 TypeHandler(通俗易懂,效率起飞),处理jsonb、数组、枚举类型。支持MybatisPlus

一 使用场景 在项目开发过程中,我们经常遇到这样的情况:Java 对象中的数据类型与数据库中的字段类型不一致。这时,我们需要在保存数据到数据库和从数据库检索数据时进行类型转换。例如: 对于一些数据库特有的数据类型&#xff0…

【Electron】Vite+Ts 项目内配置路径别名 “@/“

如果你在Vite项目内使用绝对路径 "/" 出现这样报错 [plugin:vite:import-analysis] Failed to resolve import "/components/HelloWorld.vue" from "src\App.vue". Does the file exist? C:/Users/ttatt/Desktop/te/getLive/gitee/webElectron/…

Ubuntu 安装MySQL以及基本使用

前言 MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管理其数据。 安装…