python爬虫———激发学习兴趣的案列(第十三天)

🎈🎈作者主页: 喔的嘛呀🎈🎈
🎈🎈所属专栏:python爬虫学习🎈🎈
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 

 

目录

一、爬取豆瓣电影Top250信息:

二、爬取Github上的Python项目信息(只有一部分)

三、爬取知乎上关于Python话题下的热门问题和对应的回答:

总结


嘿嘿,小伙伴们,今天为了激发大家的学习兴趣。俺特的找了几个爬虫的小案例,给大家展示一下。话不多说,正片开始。(大家在爬取数据的时候,一定要注意合法合规)

一、爬取豆瓣电影Top250信息:

就是这个豆瓣电影页面,接下来我们就要把前250名的电影的电影名称与评分爬取下来保存到

douban_top250.csv文件中

豆瓣网站的反爬虫机制限制了请求的频率或者数据量。所以我们可以尝试在每次请求之间加入更长的延迟,以降低请求频率。另外,我们也可以尝试分批次进行请求,每次请求部分数据,然后合并结果。以下是一个分批次请求的示例代码:

import requests
from bs4 import BeautifulSoup
import csv
import time
import randomdef scrape_douban_top250(url):# 设置请求头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)# 解析网页内容soup = BeautifulSoup(response.text, 'html.parser')# 获取电影列表movies = soup.find_all('div', class_='item')return moviesdef save_to_csv(movies, filename):# 将电影信息保存到CSV文件中with open(filename, 'a', newline='', encoding='utf-8') as csvfile:csvwriter = csv.writer(csvfile)for movie in movies:title = movie.find('span', class_='title').get_text()rating = movie.find('span', class_='rating_num').get_text()csvwriter.writerow([title, rating])url = '<https://movie.douban.com/top250>'
filename = 'douban_top250.csv'# 创建CSV文件并写入表头
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:csvwriter = csv.writer(csvfile)csvwriter.writerow(['电影名称', '评分'])start = 0
while start < 250:# 循环爬取每页的电影信息movies = scrape_douban_top250(f'{url}?start={start}')save_to_csv(movies, filename)start += 25# 添加随机延迟,避免频繁请求被封禁time.sleep(random.uniform(1, 3))print('保存成功')

添加请求头信息: 有些网站需要在请求中包含用户代理(User-Agent)信息,模拟浏览器访问。你可以尝试添加请求头信息来解决问题:

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)

结果展示:

二、爬取Github上的Python项目信息(只有一部分)

import requests
import csvdef get_python_projects():# 设置请求URL和参数url = '<https://api.github.com/search/repositories>'params = {'q': 'language:python','sort': 'stars','order': 'desc'}# 设置请求头,包括用户代理信息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'}# 发起GET请求response = requests.get(url, params=params, headers=headers)# 解析JSON响应data = response.json()projects = data['items']return projectsif __name__ == '__main__':# 获取项目信息projects = get_python_projects()# 写入CSV文件with open('github_python_projects.csv', 'w', newline='', encoding='utf-8') as csvfile:csvwriter = csv.writer(csvfile)# 写入表头csvwriter.writerow(['项目名称', '星标数', '项目地址'])# 遍历项目列表,写入每个项目的信息for project in projects:name = project['name']stars = project['stargazers_count']url = project['html_url']csvwriter.writerow([name, stars, url])print('保存成功')

请确保替换代码中的 'Your User Agent' 为合适的用户代理信息。这段代码会将项目名称、星标数和项目地址保存到名为**github_python_projects.csv**的CSV文件中,并在控制台输出“保存成功”消息。

结果展示:

三、爬取知乎上关于Python话题下的热门问题和对应的回答:

import requests
from bs4 import BeautifulSoup
import csv
import textwrapurl = '<https://www.zhihu.com/topic/19552832/top-answers>'
headers = {'User-Agent': 'Your User Agent'  # 替换为你的用户代理
}# 发送请求获取页面内容
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')# 解析页面获取问题和回答
questions = soup.select('.List-item')
data = []
for question in questions:title = question.select_one('.ContentItem-title').get_text()answer = question.select_one('.RichContent-inner').get_text()# 格式化回答文本,限制每行最大长度为80answer = '\\n'.join(textwrap.wrap(answer, width=80))data.append({'问题': title, '回答': answer})# 将结果保存到CSV文件中
with open('zhihu_python.csv', 'w', newline='', encoding='utf-8') as csvfile:fieldnames = ['问题', '回答']writer = csv.DictWriter(csvfile, fieldnames=fieldnames)writer.writeheader()for qa in data:writer.writerow(qa)print('保存成功')

这段代码首先发送请求获取知乎Python话题下热门问题和回答的页面内容,然后使用BeautifulSoup解析页面,提取问题和回答信息。接着,使用textwrap模块对回答文本进行格式化,限制每行最大长度为80个字符。最后,将格式化后的结果保存到CSV文件中。

结果展示:

总结

当涉及Python爬虫学习时,案例对于激发兴趣和加深理解非常重要。在这个过程中,我们学习了如何使用Python中的requests和BeautifulSoup库来进行简单和复杂的网页数据抓取。

在这个过程中,我们从简单的示例开始,比如爬取百度首页的标题和链接,逐渐过渡到复杂的案例,比如爬取豆瓣电影Top250的详细信息和知乎上关于Python话题下的热门问题和回答。通过这些案例,我们学会了如何处理不同类型的网页内容,如何解析HTML,以及如何提取和保存感兴趣的数据。

在实际项目中,爬虫可以应用于许多领域,如数据采集、信息监控、搜索引擎优化等。掌握爬虫技术可以帮助我们更好地理解网络数据的结构和组织方式,并能够从中获取有用的信息。

总的来说,通过学习Python爬虫,我们不仅可以提升数据获取和处理的能力,还可以培养数据分析和挖掘的兴趣,为进一步深入学习和实践打下坚实的基础。

小伙伴们·,今天的展示就到这里了,希望可以在一定程度上可以激发你们学习的兴趣。温馨提示,不要乱爬取网站的敏感数据,一定要合法合规。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/304003.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【24年更新】如何在OnlyFans购买订阅? OnlyFans银行卡怎么支付?使用虚拟visa支付OnlyFans信用卡教程

1. OnlyFans简介 OnlyFans是一个流行的内容订阅平台&#xff0c;创作者通过粉丝订阅来赚取收入。该平台自2016年成立以来&#xff0c;吸引了包括音乐家、健身教练和摄影师等多种创作者。 2. 虚拟信用卡介绍 虚拟信用卡是一种替代传统银行卡的支付方式&#xff0c;适用于国际…

谈谈功率IC巨头—士兰微

大家好&#xff0c;我是砖一。 今天给大家分享一下士兰微电子公司&#xff0c;&#xff0c;有做功率元器件&开关电源和IC的朋友可以了解一下&#xff0c;希望对你有用~ 1 公司介绍 士兰微电子成立于1997年&#xff0c;于2003年上市&#xff0c;总部位于杭州&#xff0c;…

Spring Boot-01-通过一个项目快速入门

官方参考文档&#xff1a;Spring Boot Reference Documentation 0. 概述 Spring的缺点&#xff1a; 1. 配置繁琐&#xff1a;虽然Spring的组件代码是轻量级&#xff0c;但它的配置却是重量级的。 2. 依赖繁琐&#xff1a;项目的依赖管理也是一件耗时耗力的事情。分析要导入哪…

搭建前后端的链接(java)

搭建前后端的链接(java) 一.前提 1.1 javaEE 搭建前后端的链接首先需要用到javaEE&#xff0c;也就是java企业版&#xff0c;也就是java后端(后端javaSE) 利用javaEE和前端交互&#xff0c;javaSE和数据库交互&#xff0c;javaSE和javaEE之间再进行交互就实现了前后端的交互…

【智能算法】省时方便,智能算法统计指标——一键运行~

目录 1.常用统计指标2.参数统计检验3.结果展示4.自定义修改测试框架 1.常用统计指标 测试智能算法性能时&#xff0c;常常会用到以下5种常用指标&#xff0c;简单不赘述&#xff1a; 最优值、最差值、均值、中位数、标准差 2.参数统计检验 单纯依靠常用统计指标说服力不足&…

ZStack Cloud 5.0.0正式发布——Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强四大亮点简析

近日&#xff0c;ZStack Cloud 5.0.0正式发布&#xff0c;推出了包含Vhost主存储、隔离PVLAN网络、云平台报警优化、灰度升级增强在内的一系列重要功能。云主机管理、物理机运维、密评合规、灾备服务等诸多使用场景和功能模块均有更新&#xff0c;为您带来更完善的平台服务、更…

【Keil5-编译4个阶段】

Keil5-编译 ■ GCC编译4个阶段■ 预处理->编译->汇编->链接■ GNU工具链开发流程图■ armcc/armasm&#xff08;编译C和汇编&#xff09;■ armlink &#xff08;链接&#xff09;■ armar &#xff08;打包&#xff09;■ fromelf &#xff08;格式转换器&#xff09…

C++ 线程库(thread)与锁(mutex)

一.线程库(thread) 1.1 线程类的简单介绍 thread类文档介绍 在C11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;比如windows和linux下各有自己的接口&#xff0c;这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了&#xff…

python小练习(ps:可评论区讨论)

1. (单选题)海龟初始坐标为&#xff08;0&#xff0c;0&#xff09;&#xff0c;让海龟往坐标原点后方移动200像素的语句是 A. turtle.penup(200)B. turtle.fd(200)C. turtle.goto(200)D. turtle.bk(200) 2. (单选题)改变海龟画笔尺寸的是 A. turtle.penwidth()B. turtle.pen…

OpenHarmony分布式软总线API调用测试工具 softbus_tool使用说明

softbus_tool 是 OpenHarmony 分布式软总线 API 调用测试工具&#xff0c;文件结构如下图所示。 softbus_tool 能够将软总线 interfaces 目录下的一些常用接口集中起来&#xff0c;供设备间搭建一些场景时使用&#xff08;比如设备绑定、BR 组网&#xff0c;BLE 组网&#xff…

linux内核驱动-在内核代码里添加设备结点

linux中&#xff0c;一切皆文件 我们在用户层用一些系统函数&#xff08;如&#xff1a;fopen等等&#xff09;时&#xff0c;会进入内核&#xff0c;内核会在字符注册了的设备号链表中查找。如果找到就运行我们写的设备文件的&#xff08;驱动&#xff09;函数 我们在前面已经…

DataX 数据库同步部分源码解析

在工作中遇到异构数据库同步的问题,从Oracle数据库同步数据到Postgres&#xff0c;其中的很多数据库表超过百万&#xff0c;并且包含空间字段。经过筛选&#xff0c;选择了开源的DataXDataX Web作为基础框架。DataX 是阿里云的开源产品&#xff0c;大厂的产品值得信赖&#xff…

51单片机入门_江协科技_20.1_Proteus串口仿真

1.为了解决51单片机学习过程中在Proteus中的串口仿真的问题&#xff0c;需要在Proteus中建立串口仿真的环境&#xff08;目前Proteus安装在Win7x64虚拟机环境中&#xff1b; 2. 在CSDN中找到VSPD下载地址&#xff0c;在虚拟机中进行VSPD的安装&#xff0c;具体链接地址如下&am…

【Linux】LVM逻辑卷详解

目录 一、LVM的基本概念 1. 为什么要使用逻辑卷 2. LVM的机制 3. 使用LVM的基本命令 二、LVM建立、扩容的过程演示 1. LVM的建立与使用 2. LVM逻辑卷的扩容 3. 扩容根分区 一、LVM的基本概念 磁盘分区的缺点&#xff1a; 没有备份功能 ------> 诞生raid来解决无法…

某狗网歌曲接口逆向之加密算法刨析

逆向网址 aHR0cHM6Ly93d3cua3Vnb3UuY29t 逆向链接 aHR0cHM6Ly93d3cua3Vnb3UuY29tL21peHNvbmcvN2dxcGVzNjguaHRtbA 逆向接口 aHR0cHM6Ly93d3dhcGkua3Vnb3UuY29tL3BsYXkvc29uZ2luZm8 逆向过程 请求方式&#xff1a;GET 逆向参数 signature:1898d8f157837fadc9751fdacf1398f9 …

【洛谷】P9236 [蓝桥杯 2023 省 A] 异或和之和

题目链接 P9236 [蓝桥杯 2023 省 A] 异或和之和 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 1. 暴力求解 直接枚举出所有子数组&#xff0c;求每个子数组的异或和&#xff0c;再对所有的异或和求和 枚举所有子数组的时间复杂度为O&#xff08;N^2&#xff09;&…

(学习日记)2024.04.10:UCOSIII第三十八节:事件实验

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

6.1Python之字典的初识

【1】字典的创建与价值 字典&#xff08;Dictionary&#xff09;是一种在Python中用于存储和组织数据的数据结构。元素由键和对应的值组成。其中&#xff0c;键&#xff08;Key&#xff09;必须是唯一的&#xff0c;而值&#xff08;Value&#xff09;则可以是任意类型的数据。…

性能测试干2年,还不会这个技术点?!

nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c;记录的信息比较全面&#xff0c;结合nmon_analyzer工具产生数据文件与图形化结果。 nmon可监控的数据类型 内存使用情况、磁盘适配器、文件系统中的可用空间、CPU使用率等等数据信息 特点 ①占用…

urwid,一个好用的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个好用的 Python 库 - urwid。 Github地址&#xff1a;https://github.com/urwid/urwid Urwid 是一个功能强大的 Python 库&#xff0c;用于创建基于文本的用户界面&#xf…