Python爬虫之小白入门保姆级教程,带7个爬虫小案例(附源码)!

以下是一份 Python 爬虫入门保姆级教程:

一、准备工作

  1. 安装 Python

    • 前往 Python 官方网站(https://www.python.org/)下载适合你操作系统的 Python 版本并安装。安装过程中可以勾选“Add Python to PATH”以便在命令行中方便地调用 Python。
  2. 选择开发环境

    • 如果你是初学者,可以使用集成开发环境(IDE)如 PyCharm。它提供了代码自动补全、调试等功能,方便开发。也可以使用简单的文本编辑器如 Visual Studio Code,通过安装 Python 插件来进行开发。
  3. 了解基本概念

    • HTML:网页的结构语言,了解其基本标签和结构有助于理解网页内容。
    • HTTP/HTTPS:网络通信协议,爬虫主要通过这些协议与服务器进行交互。
    • 爬虫的合法性:在进行爬虫时,要遵守法律法规和网站的使用条款,避免非法爬取数据。

二、安装必要的库

  1. Requests

    • 用于发送 HTTP 请求,获取网页内容。可以在命令行中使用“pip install requests”进行安装。
  2. BeautifulSoup

    • 用于解析 HTML 和 XML 文档,提取所需的数据。安装命令为“pip install beautifulsoup4”。

三、开始爬取

  1. 发送请求

    • 使用 Requests 库发送 GET 请求获取网页内容。例如:
    import requestsurl = 'https://example.com'
    response = requests.get(url)
    
  2. 解析网页

    • 使用 BeautifulSoup 解析网页内容。例如:
    from bs4 import BeautifulSoupsoup = BeautifulSoup(response.text, 'html.parser')
    
  3. 提取数据

    • 根据网页结构,使用 BeautifulSoup 的方法提取所需的数据。例如,如果要提取所有的链接,可以使用以下代码:
    links = [a['href'] for a in soup.find_all('a', href=True)]
    
  4. 存储数据

    • 可以将提取的数据存储到文件中,如 CSV、JSON 等格式,或者存储到数据库中。例如,将数据存储到 CSV 文件中:
    import csvwith open('data.csv', 'w', newline='') as csvfile:writer = csv.writer(csvfile)writer.writerow(['标题', '链接'])for link in links:title = soup.find('a', href=link).textwriter.writerow([title, link])
    

四、进阶技巧

  1. 处理动态页面

    • 有些网页是通过 JavaScript 动态生成的,此时可以使用工具如 Selenium 来模拟浏览器操作,获取页面内容。
  2. 设置请求头

    • 为了避免被网站识别为爬虫,可以设置请求头,模拟浏览器的请求。例如:
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(url, headers=headers)
    
  3. 处理异常

    • 在爬取过程中可能会遇到各种异常,如网络连接错误、页面解析错误等。要使用 try-except 语句来处理这些异常,保证程序的稳定性。

五、注意事项

  1. 遵守法律法规和网站的使用条款,不要爬取敏感信息或侵犯他人隐私。
  2. 控制爬取速度,避免对目标网站造成过大的负担。
  3. 注意数据的版权问题,不要未经授权使用爬取的数据。

通过以上步骤,你可以初步掌握 Python 爬虫的基本方法。随着学习的深入,你还可以探索更多高级的爬虫技术,如分布式爬虫、反爬虫策略等。

以下是七个 Python 爬虫小案例及源码:

案例一:爬取豆瓣电影Top250列表

import requests
from bs4 import BeautifulSoupdef douban_movie_top250():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/92.0.4515.131 Safari/537.36"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")movies = soup.find_all("div", class_="item")for movie in movies:title = movie.find("span", class_="title").textrating = movie.find("span", class_="rating_num").textprint(f"电影名称:{title},评分:{rating}")douban_movie_top250()

案例二:爬取知乎热榜问题

import requests
from bs4 import BeautifulSoupdef zhihu_hot():url = "https://www.zhihu.com/hot"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")hot_questions = soup.find_all("div", class_="HotItem-content")for question in hot_questions:title = question.find("a").textprint(f"知乎热榜问题:{title}")zhihu_hot()

案例三:爬取天气预报

import requestsdef weather_report(city):url = f"http://wthrcdn.etouch.cn/weather_mini?city={city}"response = requests.get(url)data = response.json()if data["status"] == 1000:weather_info = data["data"]city_name = weather_info["city"]forecast = weather_info["forecast"][0]date = forecast["date"]high_temp = forecast["high"]low_temp = forecast["low"]weather_type = forecast["type"]print(f"{city_name}的天气预报:{date},天气{weather_type},高温{high_temp},低温{low_temp}")else:print("无法获取该城市的天气预报。")weather_report("北京")

案例四:爬取百度新闻标题

import requests
from bs4 import BeautifulSoupdef baidu_news():url = "https://news.baidu.com/"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")news_titles = soup.find_all("a", class_="news-title")for title in news_titles:print(title.text)baidu_news()

案例五:爬取京东商品信息

import requests
from bs4 import BeautifulSoupdef jd_product_info(keyword):url = f"https://search.jd.com/Search?keyword={keyword}"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")products = soup.find_all("div", class_="gl-i-wrap")for product in products:title = product.find("div", class_="p-name").a.em.textprice = product.find("div", class_="p-price").strong.i.textprint(f"商品名称:{title},价格:{price}")jd_product_info("手机")

案例六:爬取微博热搜榜

import requestsdef weibo_hot():url = "https://s.weibo.com/top/summary?cate=realtimehot"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}response = requests.get(url, headers=headers)data = response.textstart_index = data.find('"hotData": [') + len('"hotData": [')end_index = data.find(']', start_index)hot_data = data[start_index:end_index]hot_items = hot_data.split('},{')for item in hot_items:title = item.split('"word":"')[1].split('"')[0]print(f"微博热搜:{title}")weibo_hot()

案例七:爬取古诗词网的诗词

import requests
from bs4 import BeautifulSoupdef ancient_poetry():url = "https://www.gushiwen.cn/"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"}response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, "html.parser")poems = soup.find_all("div", class_="left")for poem in poems:title = poem.find("h1").textauthor = poem.find("p", class_="source").a.textcontent = poem.find("div", class_="contson").textprint(f"诗词名称:{title},作者:{author},内容:{content}")ancient_poetry()

Python学习资料(项目源码、安装包、激活码、电子书、视频教程)已经打包好啦!
需要的小伙伴【点击领取】哦!或者下方扫码拿走!

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

初识git · 有关模型

目录 前言: 有关开发模型 前言: 其实文章更新到这里的时候,我们已经学习了可以满足我们日常生活中的基本需求的指令了,但是为什么要更新本篇文章呢?是因为实际生活中我们对于开发工作,运维工作&#xff…

ubuntu查看系统版本命令

查看系统版本指令 在 Ubuntu 操作系统中,您可以使用多个命令来查看系统版本。以下是一些常用的命令: lsb_release -a 这个命令会显示详细的 Ubuntu 版本信息,包括发行版名称、版本号、代号等。lsb_release -acat /etc/os-release 这个命令会显…

基于SSM的的水电管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

5G工业路由器智能电网部署实录:一天内解决供电、网络

凌晨4:13,我被手机震动惊醒。变电站值班人员发来紧急消息:昨晚部署的SR800突然离线。我立即查看了STAR Device Manager平台,确认是设备A37号在3:47分失去连接。(key-iot.com/iotlist/sr800-3.html) 6:30到达变电站。检查SR800状态,发现是供电问题导致设备重启。这个老旧变电站…

pytorch训练和使用resnet

pytorch训练和使用resnet 使用 CIFAR-10数据集 训练 resnet resnet-train.py import torch import torchvision import torchvision.transforms as transforms import torch.nn as nn import torch.optim as optim# 在CIFAR-10数据集中 # 训练集:包含50000张图像…

电影院订票选座小程序ssm+论文源码调试讲解

第2章 开发环境与技术 电影院订票选座小程序的编码实现需要搭建一定的环境和使用相应的技术,接下来的内容就是对电影院订票选座小程序用到的技术和工具进行介绍。 2.1 MYSQL数据库 本课题所开发的应用程序在数据操作方面是不可预知的,是经常变动的&…

处理文件上传和进度条的显示(进度条随文件上传进度值变化)

成品效果图&#xff1a; 解决问题&#xff1a;上传文件过大时&#xff0c;等待时间过长&#xff0c;但是进度条却不会动&#xff0c;只会在上传完成之后才会显示上传完成 上传文件的upload.component.html <nz-modal [(nzVisible)]"isVisible" [nzTitle]"文…

python包以及异常、模块、包的综合案例(较难)

1.自定义包 python中模块是一个文件&#xff0c;而包就是一个文件夹 有这个_init_.py就是python包&#xff0c;没有就是简单的文件夹 包的作用&#xff1a;当我们的模块越来越多时&#xff0c;包可以帮助我们管理这些模块&#xff0c;包的作用就是包含多个模块&#xff0c;但包…

【命令操作】信创终端系统上timedatectl命令详解 _ 统信 _ 麒麟 _ 方德

原文链接&#xff1a;【命令操作】信创终端系统上timedatectl命令详解 | 统信 | 麒麟 | 方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于如何在信创终端系统上使用timedatectl命令的详细介绍。timedatectl 是Linux系统中非常实用的时间管理工具&#xff0c;…

学习写作--polyGCL.md

POLYGCL: GRAPH CONTRASTIVE LEARNING VIA LEARNABLE SPECTRAL POLYNOMIAL filters 这篇工作的摘要和引言写的特别好&#xff08;不愧是ICLR spotlight&#xff09; 摘要 第一步&#xff0c;设定背景 Recently, Graph Contrastive Learning (GCL) has achieved significantl…

使用Flask实现本机的模型部署

前言 模型部署是指将大模型运行在专属的计算资源上&#xff0c;使模型在独立的运行环境中高效、可靠地运行&#xff0c;并为业务应用提供推理服务。其目标是将机器学习模型应用于实际业务中&#xff0c;使最终用户或系统能够利用模型的输出&#xff0c;从而发挥其作用。 一、设…

12 django管理系统 - 注册与登录 - 登录

为了演示方便&#xff0c;我就直接使用models里的Admin来演示&#xff0c;不再创建用户模型了。 ok&#xff0c;先做基础配置 首先是在base.html中&#xff0c;新增登录和注册的入口 <ul class"nav navbar-nav navbar-right"><li><a href"/ac…

黑马软件测试第一篇_Linux

Linux 操作系统 说明: 所有硬件设备组装完成后的第⼀一层软件, 能够使⽤用户使⽤用硬件设备的软件 即为操作系统 常见分类 桌⾯面操作系统: Windows/macOS/Linux移动端操作系统: Android(安卓)/iOS(苹果)服务器器操作系统: Linux/Windows Server嵌⼊入式操作系统: Android(底…

linux线程 | 同步与互斥 | 线程池以及知识点补充

前言&#xff1a;本节内容是linux的线程的相关知识。本篇首先会实现一个简易的线程池&#xff0c; 然后再将线程池利用单例的懒汉模式改编一下。 然后再谈一些小的知识点&#xff0c;比如自旋锁&#xff0c; 读者写者问题等等。 那么&#xff0c; 现在开始我们的学习吧。 ps:本…

吴恩达深度学习笔记(6)

正交化 为了提高算法准确率&#xff0c;我们想到的方法 收集更多的训练数据增强样本多样性使用梯度下降将算法使算法训练时间更长换一种优化算法更复杂或者更简单的神经网络利用dropout 或者L2正则化改变网络框架更换激活函数改变隐藏单元个数 为了使有监督机制的学习系统良…

ansible playbooks

文章目录 一&#xff0c;ansible剧本二&#xff0c;ansible playbooks主要特性三&#xff0c;yaml基本语法规则四&#xff0c;剧本playbooks的组成结构五&#xff0c;yaml编写1.示例2.运行playbook2.1 运行2.2 检查yaml文件的语法是否正确2.3 检查tasks任务2.3 检查生效的主机2…

maven创建父子项目

创建父类 创建子模块 添加文件夹 配置tomcat 参考 然后启动项目即可 参考 https://blog.csdn.net/gjtao1130/article/details/115000022

Linux——shell 编程基础

基本介绍 shell 变量 环境变量&#xff08;也叫全局变量&#xff09; 位置参数变量 预定义变量 运算符 条件判断 流程控制 if 单分支&多分支 case 语句 for循环 while 循环 read 读取控制台输入 函数 系统函数 basename 获取文件名 dirname 获取目录路径 自定义函数 综…

DataWhale10月动手实践——Bot应用开发task03学习笔记

一、工作流 1. 工作流的定义 工作流由多个节点组成&#xff0c;这些节点可以包括大语言模型&#xff08;LLM&#xff09;、代码模块、逻辑判断工具、插件等。每个节点需要不同的信息来执行其功能。工作流的核心含义是&#xff1a;对工作流程及其操作步骤之间的业务规则进行抽…

中国信通院联合中国电促会开展电力行业企业开源典型实践案例征集

自2021年被首次写入国家“十四五”规划以来&#xff0c;开源技术发展凭借其平等、开放、协作、共享的优秀创作模式&#xff0c;正持续成为推动数字技术创新、优化软件生产模式、赋能传统行业转型升级、助力企业降本增效的重要引擎。电力是国民经济的重要基础性产业&#xff0c;…