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.mzph.cn/news/805767.shtml

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

相关文章

渲染农场实时画面怎么设置?云渲染农场实时预览效果查看

许多用户在使用渲染农场服务时&#xff0c;常常难以找到查看实时渲染画面的功能。由于渲染是一个时间消耗较大的任务&#xff0c;如果最终结果与预期不符&#xff0c;可能会对整个工作流程产生负面影响。因此&#xff0c;渲染平台若能提供实时预览渲染进度和效果的功能&#xf…

代码随想录算法训练营第五十天 | 123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV

代码随想录算法训练营第五十天 | 123. 买卖股票的最佳时机 III、188. 买卖股票的最佳时机 IV 123. 买卖股票的最佳时机 III题目解法 188. 买卖股票的最佳时机 IV题目解法 感悟 123. 买卖股票的最佳时机 III 题目 解法 题解链接 1. class Solution { public:int maxProfit(ve…

【汇编语言实战】求三个已知数最大值

C语言描述该程序流程&#xff1a; #include <stdio.h> int main() {int a10,b20,c15;//scanf("%d %d",&a,&b);if(a>b){if(a>c){printf("%d",c);}else{printf("%d",a);}}else{if(b>c){printf("%d",b);}else{pr…

【C++】掌握C++函数重载和引用开启代码优化的新篇章

欢迎来CILMY23的博客 本篇主题为 掌握C函数重载和引用开启代码优化的新篇章 个人主页&#xff1a;CILMY23-CSDN博客 个人专栏&#xff1a; | | | CILMY23-CSDN博客 上一篇博客&#xff1a;第一个C结构&#xff0c;C关键字&#xff0c;命名空间&#xff0c;C的输入输出&…

IPEX-LLM(原名BigDL-LLM)环境配置

IPEX-LLM 是一个为Intel XPU (包括CPU和GPU) 打造的轻量级大语言模型加速库&#xff0c;在Intel平台上具有广泛的模型支持、最低的延迟和最小的内存占用。 您可以使用 IPEX-LLM 运行任何 PyTorch 模型&#xff08;例如 HuggingFace transformers 模型&#xff09;。在运行过程中…

《C++程序设计》阅读笔记【7-堆和拷贝构造函数】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;《C程序设计》阅读笔记 本文对应的PDF源文件请关注微信公众号程序员刘同学&#xff0c;回复C程序设计获取下载链接。 1 堆与拷贝构造函数1.1 概述1.2 分配堆对象1.3 拷贝构造函数1.3.1 默…

301永久重定向与302临时重定向的正确运用

我们前不久有Hostease的客户的网站进行了域名更改。客户想了解域名更改后会有哪些后果和影响。一般网站域名更换后会遇到旧页面失效问题。为了优化用户体验和维护搜索引擎优化(SEO)&#xff0c;我们需要正确地使用301永久重定向和302临时重定向。这两种重定向方式各有其特点和适…

本地linux怎样先亚马逊云服务器上传文件

使用亚马逊云服务器的密钥&#xff0c;并通过srp命令&#xff0c; 连接上传&#xff1a; scp -i <密钥文件路径> <本地文件路径> <远程主机用户名><远程主机地址>:<目标路径> scp -i assig2.pem data.txt ubuntuec2-xx-xxx-xx-xx1.compute-x.…

langchain 使用本地通义千问

langchian 使用已经下载到本地的模型&#xff0c;我们使用通义千问 显存&#xff1a;24G 模型&#xff1a;qwen1.5-7B-Chat&#xff0c;qwen-7B-Chat 先使用 qwen-7B-Chat&#xff0c;会报错用不了&#xff1a; 看了下是不支持这中模型&#xff0c;但看列表中有一个 Qwen 字样…

【Linux】初识Linux,虚拟机安装Linux系统,配置网卡

前言 VMware软件&#xff1a;首先&#xff0c;确保您已经下载了VMware Workstation软件并安装在电脑上。VMware Workstation是一款功能强大的虚拟化软件&#xff0c;它允许在单一物理机上运行多个操作系统。 Linux镜像文件&#xff1a;需要准备一个Linux操作系统的镜像文件。…

python使用uiautomator2操作雷电模拟器9找图

接上篇文章python使用uiautomator2操作雷电模拟器9并遇到解决adb 连接emulator-5554 unauthorized问题-CSDN博客 搭建好uiautomator2后&#xff0c;主要就是使用了。 本文就利用uiautomator2的截屏、模拟点击和aircv的找图功能&#xff0c;实现对指定寻找的图片的位置的点击。…

java程序生成exe文件启动时,在没有java环境计算机运行

1.idea项目配置工件 2. 开始构建java程序成jar包 3. 生成exe启动程序

结构型模式--3.组合模式【草帽大船团】

1. 好大一棵树 路飞在德雷斯罗萨打败多弗朗明哥之后&#xff0c;一些被路飞解救的海贼团自愿加入路飞麾下&#xff0c;自此组成了草帽大船团&#xff0c;旗下有7为船长&#xff0c;分别是&#xff1a; 俊美海贼团75人 巴托俱乐部56人 八宝水军1000人 艾迪欧海贼团4人 咚塔塔海…

交换机的基本原理与配置_实验案例一:交换机的初始配置

1、实验环境 实验用具包括一台Cisco交换机&#xff0c;一台PC&#xff0c;一根Console 线缆。 2、需求描述 如图5.17所示&#xff0c;实验案例一的配置需求如下。 通过PC连接并配置一台Cisco交换机。在交换机的各个配置模式之间切换。将交换机主机的名称改为BDON 3、推荐步…

知网参考文献引用格式转latex中BibTex-Python操作

处理思路 参考 处理步骤&#xff1a; &#xff08;单条处理&#xff1a;&#xff09; 1、选知网NoteExpress格式的2-7行复制信息 2、新建一个文本文件&#xff0c;命名为cite.txt&#xff0c;把知网所复制信息粘贴进来 &#xff08;txt文件保存编码ANSI可行&#xff09; 3、…

Double.toString()原理

转变过程 如图&#xff0c;假设将double类型能精确表示的数字落在数轴上&#xff0c;分别是double1、double2、double3。 这个时候&#xff0c;我们有十进制数字a&#xff0c;想要转变成double表示&#xff0c;这个时候得到的是double2&#xff0c;因为double2是距离这个十进制…

进制转换(2 8 10 16 String)

题目 public class Main {static String s "0123456789abcdef";//m 2 8 10 16public static int res(int n,int m) {StringBuffer sb new StringBuffer(); while(n!0) {sb.append(s.charAt(n%m));n/m;}//转换为对应进制之后String s sb.reverse().toString();ch…

2023NJU-ICS PA1.2表达式求值 思路详解 心得体会

前言 PA1.2的细节非常非常多&#xff0c;导致这几天花了大量的时间去调试bug&#xff0c;4.3晚上终于过了最后一关“如何测试你的代码”&#xff08;花了两整天时间才调成功&#xff09;。虽然耗时巨大&#xff0c;但确实学到了不少东西、训练了能力&#xff0c;于是抽几天时间…

echarts地图自定义label属性以及引入china.js

效果图: 要点1:calc函数 重点&#xff1a;在于mapChart的height可以写成函数以便适配不同尺寸&#xff1b; <div class"content-map"><div class"wai-top-box" style"width: 100%; height: 100%"><div id"mapChart" s…

Host Aware SMR

SMR 简介 首先给一点前置SMR知识。 SMR优势&#xff1a;Capacity的提升。 看图&#xff1a;由于重叠Track使得存储密度得到了提升。但是由于Track的重叠&#xff0c;使得SMR只能顺序写。 在SMR中&#xff0c;多个Track组成一个Band&#xff0c;各个Band之间可以随机写 这个 …