基于python的网络爬虫实现代码

news/2024/10/18 21:00:07/

以下是一个基于Python的简单网络爬虫实现示例,以爬取豆瓣电影Top250的电影名称和评分为例:

  1. 安装必要的库

    • 我们需要安装requests库用于发送HTTP请求获取网页内容,BeautifulSoup库用于解析HTML页面。
    • 可以使用pip install requests beautifulsoup4命令进行安装。
  2. 导入相关库

python">import requests
from bs4 import BeautifulSoup
  1. 发送请求并获取页面内容
python">url = 'https://movie.douban.com/top250'
headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
response = requests.get(url, headers = headers)
html_content = response.text
  • 这里设置User - Agent头部信息是为了模拟浏览器访问,避免被服务器拒绝访问。
  1. 解析页面内容
python">soup = BeautifulSoup(html_content, 'html.parser')
movie_list = soup.find_all('div', class_='hd')
score_list = soup.find_all('span', class_='rating_num')
  • 我们通过BeautifulSoupfind_all方法来查找所有符合条件的HTML标签。这里分别查找包含电影名称的<div class="hd">标签和包含评分的<span class="rating_num">标签。
  1. 提取信息
python">for movie, score in zip(movie_list, score_list):movie_name = movie.a.span.textprint(f"电影名称: {movie_name}, 评分: {score.text}")
  • 通过遍历找到的电影名称标签和评分标签,提取出电影名称和评分并打印出来。

如果要进一步扩展这个爬虫

  • 分页处理
    • 豆瓣电影Top250是分页显示的。可以通过分析页面的URL结构来实现分页爬取。例如,第二页的URL是https://movie.douban.com/top250?start = 25&filter = ,其中start参数表示从第几个电影开始显示。
    • 可以使用循环来遍历不同的页面,修改start参数的值来获取所有页面的内容。
python">for page in range(0, 250, 25):url = f'https://movie.douban.com/top250?start={page}&filter='# 后续的请求、解析和提取步骤与前面相同
  • 数据存储
    • 可以将爬取到的数据存储到文件或者数据库中。
    • 如果存储到CSV文件中,可以使用csv模块。
python">import csv
with open('douban_movies.csv', 'w', newline='', encoding='utf - 8 - sig') as csvfile:fieldnames = ['电影名称', '评分']writer = csv.DictWriter(csvfile, fieldnames = fieldnames)writer.writeheader()for movie, score in zip(movie_list, score_list):movie_name = movie.a.span.textwriter.writerow({'电影名称': movie_name, '评分': score.text})
  • 如果存储到数据库(如MySQL),需要安装mysql - connector - python库,然后进行数据库连接、创建表和插入数据等操作。
python">import mysql.connector
mydb = mysql.connector.connect(host = "localhost",user = "your_user",password = "your_password",database = "your_database"
)
mycursor = mydb.cursor()
mycursor.execute('CREATE TABLE IF NOT EXISTS douban_movies (movie_name VARCHAR(255), score VARCHAR(10))')
for movie, score in zip(movie_list, score_list):movie_name = movie.a.span.textsql = "INSERT INTO douban_movies (movie_name, score) VALUES (%s, %s)"val = (movie_name, score.text)mycursor.execute(sql, val)
mydb.commit()

http://www.ppmy.cn/news/1540088.html

相关文章

Spring Boot构建高效医疗病历B2B交互平台

第3章 需求分析与可行性分析 3.1 需求分析 伴随着信息行业的蓬勃发展和人们办公自动化意识的增强&#xff0c;学习信息管理部门的工作也越来越繁重&#xff0c;原来的基于B2B平台的医疗病历交互系统已经不能完全满足相关人员使用的需要。为了协助信息开展学习信息管理工作&…

九盾叉车高位显示器:重塑叉车视界,引领高位精准

在繁忙的物流与仓储中&#xff0c;叉车不仅是力量与效率的化身&#xff0c;更是精准与安全的守护者。九盾安防&#xff0c;以科技之名&#xff0c;打造叉车高位显示器&#xff0c;彻底革新了货叉升降的盲区挑战&#xff0c;为物流、仓储及码头等领域带来了前所未有的作业体验。…

中级注册安全工程师《安全生产法律法规》真题及详解

2022年中级注册安全工程师《安全生产法律法规》真题及详解 一、单项选择题 &#xff08;共70题&#xff0c;每题1分。每题的备选项中&#xff0c;只有1个最符合题意&#xff09; 1. 法律的制定主体不同&#xff0c;其法律地位和法律效力也不同。关于法律地位和效力的说法&…

提升SQL技能,掌握数据分析

提升SQL技能&#xff0c;掌握数据分析 在今天这个数据驱动的世界&#xff0c;掌握SQL&#xff08;结构化查询语言&#xff09;不仅是一项技术能力&#xff0c;更是一种职业竞争力。想象一下&#xff0c;如果你能像魔法师一样轻松从庞大且复杂的数据集中提取出有用的信息&#…

嵌入式硬件设计详解

嵌入式硬件设计详解 嵌入式硬件设计是一个复杂而精细的过程&#xff0c;它涉及将微控制器&#xff08;MCU&#xff09;、微处理器&#xff08;MPU&#xff09;或数字信号处理器&#xff08;DSP&#xff09;等核心芯片与其他外围电子元件&#xff08;如传感器、执行器、存储器、…

opencv学习:基于计算机视觉的表情识别系统

简介 基于计算机视觉的表情识别系统&#xff0c;该系统能够从视频流中实时检测人脸&#xff0c;并识别出两种基本表情&#xff1a;大笑和微笑。实验通过分析人脸关键点来计算表情特征指标&#xff0c;从而判断表情类型。 原理 基于以下原理进行&#xff1a; 人脸检测&#x…

CI/CD(持续集成与持续交付)流水线

集成 Jenkins、GitLab Webhook、Nexus 和 RabbitMQ 可以形成一个全面的 CI/CD&#xff08;持续集成与持续交付&#xff09;流水线&#xff0c;结合消息队列可以创建事件驱动的工作流。以下是配置这四个工具以实现一个基本的 CI/CD 流程的详细步骤。 前置条件 Jenkins、GitLab、…

Qt自定义一个圆角对话框

如何得到一个圆角对话框&#xff1f; 步骤&#xff1a; 1、继承自QDiaglog 2、去掉系统自带的边框 3、设置背景透明,不设置4个角会有多余的部分出现颜色 4、对话框内部添加1个QWidget&#xff0c;给这个widget设置圆角&#xff0c;并添加到布局中让他充满对话框 5、后续对…