Python学习第二十五天

news2025/3/29 16:33:06

Scrapy框架

官网概念

        Scrapy 是一个强大的 Python 网络爬虫框架。

        最新版本学习

安装

pip install scrapy

使用

# 创建名称为myscrapy的爬虫项目
scrapy starpoject myscrapy
# 创建爬那个 就是比如 需要爬http://quotes.toscrape.com 运行的名称:toscrape运行的网址:http://quotes.toscrape.com
cd myscrapy/myscrapy/spider
scrapy genspider toscrape http://quotes.toscrape.com
# 运行cd到spiders目录下执行
scrapy crawl toscrape

常见命令

命令使用 -h(或者--help) 查看帮助示例描述
scrapyscrapy -h查看所有可用的Scrapy命令
scrapy startprojectscrapy startproject -h创建一个新的Scrapy项目
scrapy genspiderscrapy genspider -h在当前项目中生成一个新的爬虫
scrapy crawlscrapy crawl -h运行一个爬虫
scrapy checkscrapy check -h检查爬虫代码是否有错误
scrapy listscrapy list -h列出当前项目中所有可用的爬虫
scrapy editscrapy edit -h在编辑器中编辑爬虫(需配置EDITOR环境变量)
scrapy fetchscrapy fetch -h使用Scrapy下载器下载URL,并输出内容
scrapy viewscrapy view -h在浏览器中打开URL,查看Scrapy如何识别它
scrapy shellscrapy shell -h启动Scrapy shell,用于调试和测试选择器
scrapy parsescrapy parse -h解析给定的URL并使用处理它的爬虫
scrapy settingsscrapy settings -h获取Scrapy设置的值
scrapy runspiderscrapy runspider -h运行一个独立的爬虫Python文件,而无需创建项目
scrapy versionscrapy version -h显示Scrapy版本,结合-v显示可用的Python、Twisted和平台信息
scrapy benchscrapy bench -h运行基准测试(需安装scrapy-bench

示例

import scrapy


class ToscrapeSpider(scrapy.Spider):
    name = "toscrape"
    allowed_domains = ["quotes.toscrape.com"]
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]

    def parse(self, response):
        print("hello world")
        page = response.url.split("/")[-2]
        filename = f'quotes-{page}.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

项目结构

myscrapy/
    scrapy.cfg            # 部署配置文件

    myscrapy/             # 项目的Python模块,您将从这里导入代码
        __init__.py

        items.py          # 项目定义文件

        middlewares.py    # 项目中间件文件

        pipelines.py      # 项目管道文件

        settings.py       # 项目设置文件

        spiders/          # 放置蜘蛛的目录
            __init__.py
            toscrape.py   # 爬虫实际执行文件 从这里执行 scrapy crawl toscrape

scrapy shell

     官网概念:scrappyshell是一个交互式shell,您可以在其中快速调试 scrape 代码,而不必运行spider。它本来是用来测试数据提取代码的,但实际上您可以使用它来测试任何类型的代码,因为它也是一个常规的Python外壳。

配置

在scrapy.cfg下配置

[settings]
shell = bpython

常用方法

命令/方法说明示例
scrapy shell <url>启动Scrapy Shell并自动下载URL,生成response对象scrapy shell "https://example.com"
fetch(url)在Shell中重新下载指定URL,更新response对象(需先启动Shell)fetch("https://example.com/page2")
response.css() / .xpath()用CSS/XPath选择器提取数据(最常用)response.css("h1::text").get()
.get() / .getall()提取单个结果(字符串)或所有结果(列表)response.xpath("//a/@href").getall()
view(response)在浏览器中打开当前response,检查页面渲染效果view(response)
response.url / .status查看当前响应的URL和HTTP状态码print(response.status)
request.headers查看请求头信息(用于调试反爬)print(request.headers)
shelp()查看Shell内置帮助(列出所有可用对象和函数)shelp()
vars()查看当前Shell的全局变量(如responserequestcrawlervars()
from scrapy import Selector手动创建Selector对象解析文本(非实时请求时使用)

sel = Selector(text="<html>...</html>")

exit()退出exit()

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

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

相关文章

【算法】动态规划:回文子串问题、两个数组的dp

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 回文子串问题回文子串最长回文子串分割回文串 IV分割回文串 II *最长回文子序列让字符串成为回文串的最少插入次数 两个数组的dp最…

文件上传绕过的小点总结(3)

6.文件首尾加空绕过 源码给出这样的&#xff0c;发现文件名处理没有首尾去空&#xff0c;于是我们可以采用首尾加空的方式绕过。 $file_name $_FILES[upload_file][name]; $file_name deldot($file_name);//删除文件名末尾的点 $file_ext strrchr($file_name, .); $file_e…

OpenHarmony 入门——ArkUI 跨页面数据同步和应用全局单例的UI状态存储AppStorage 小结(三)

文章大纲 引言一、AppStorage 应用全局的UI状态存储1、StorageProp和StorageLink装饰器建立联系2、StorageProp2.1、StorageProp使用规则2.2、StorageProp变量的传递/访问规则2.3、StorageProp支持的观察变化2.4、StorageProp 值初始化和更新 3、StorageLink3.1、StorageLink使…

阿里云国际站代理商:物联网设备怎样就近接入计算节点?

配置边缘计算实例 登录边缘计算控制台&#xff0c;找到已创建的边缘实例&#xff0c;点击实例名称后的“查看”。 分配OPC UA驱动到边缘实例中&#xff0c;选择OPCUA驱动&#xff0c;点击“设备列表”后的“驱动配置”&#xff0c;在弹出对话框中点击“添加通道”&#xff0c;…

目录遍历漏洞复现

1.在fofa中输入语法&#xff0c;查询目录遍历 body"SKControlKLForJson.ashx" 查询结果为&#xff1a; 2.寻找目录遍历漏洞&#xff0c;访问网站&#xff1a; 3.我们可以app目录中下载文件等等 4.我们还可以访问其他目录的一些东西

Java高频面试之集合-18

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;HashMap 是线程安全的吗&#xff1f;多线程下会有什么问题&#xff1f; HashMap 的线程安全性分析 HashMap 不是线程安全…

系统思考—看见未来

感谢上海财经大学终身教育学院的持续邀请&#xff01;每个月&#xff0c;都会带着不同的思维火花&#xff0c;走进财大与学员们一起探索系统思考的奥秘。 这次为宜宾市的干部们带来了一场深刻的学习体验。通过系统思考&#xff0c;帮助大家从整体视角去发现问题、分析问题、解…

保姆级教程搭建企业级智能体+私有知识库,Dify+ollama,Linux版

介绍 目前&#xff0c;AI Agent智能体已经被许多公司广泛应用&#xff0c;同时智能体借助私有知识库的加成&#xff0c;使原来知识面并不特别充分的大模型更聪明。如今特别是在医疗&#xff0c;医药&#xff0c;政企等数据保密程度高的行业&#xff0c;部署自己的私有知识库更…

记一次线上程序宕机问题分析【写 GC 日志导致进程挂起】

1. 背景 运维侧持续反馈了几次线上业务程序 A 出现宕机告警的信息&#xff0c;重启后一段时间后又出现宕机&#xff0c;这里针对最后一次告警进行深入排查和分析。 首先这一次故障出现在 2024-03-14 04:18:23&#xff0c;和以往的宕机故障略有不同&#xff0c;以往的现象是切…

【leetcode hot 100 739】每日温度

解法一&#xff1a;暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一个更高温度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高温度的地方wh…

Cookie、Session 与 Token:核心区别与应用场景解析

目录 引言 基础概念解析&#xff1a;三大身份验证技术详解 Cookie&#xff1a;浏览器中的"身份证" Session&#xff1a;服务器记忆的"对话" Token&#xff1a;加密的"通行证" 三种技术的深度对比分析 存储位置与数据流向 安全性全面对比…

状态空间模型解析 (State-Space Model, SS)

一、文章摘要 状态空间模型&#xff08;State-Space Model, SS&#xff09;是一种广泛应用于控制系统、信号处理和系统建模的数学表示方式。MATLAB 提供的 ss 类用于描述线性时不变&#xff08;LTI&#xff09;系统的状态空间表示。本类实现了 LTI 系统的构造、属性设置、变换…

zabbix添加IIS网站计数器(并发连接数)

0. Zabbix Agent 配置 PerfCounter = iis_Current_Connections,"\Web Service(_Total)\Current Connections",30 1.在被监控主机,powershell输入perfmon.msc 2.点击添加按钮 3.在下拉菜单中点击小箭头

AI小白的第七天:必要的数学知识(概率)

概率 Probability 1. 概率的定义 概率是一个介于 0 和 1 之间的数&#xff0c;表示某个事件发生的可能性&#xff1a; 0&#xff1a;事件不可能发生。1&#xff1a;事件必然发生。0 到 1 之间&#xff1a;事件发生的可能性大小。 例如&#xff0c;掷一枚公平的硬币&#xf…

[Windows] 图吧工具箱

[Windows] 图吧工具箱 链接&#xff1a;https://pan.xunlei.com/s/VOMCXYDix3pvwdkU7w7bfVsDA1?pwdk8v5# DIY爱好者的必备工具

【AIGC】图片变视频 - SD ComfyUI视频生成

效果图 完整过程 SD ComfyUI 下载 下载 https://pan.quark.cn/s/64b808baa960 解压密码&#xff1a;bilibili-秋葉aaaki 完整 https://www.bilibili.com/video/BV1Ew411776J/ SD ComfyUI 安装 1.解压 2.将controlnet内部文件复制到 ComfyUI-aki-v1.6\ComfyUI\models\control…

JVM详解(包括JVM内存模型与GC垃圾回收)

&#x1f4d6;前言&#xff1a; 学会使用Java对于一个程序员是远远不够的。Java语法的掌握只是一部分&#xff0c;另一部分就是需要掌握Java内部的工作原理&#xff0c;从编译到运行&#xff0c;到底是谁在帮我们完成工作的&#xff1f; 接下来着重对Java虚拟机&#xff0c;也就…

cocos creator 笔记-路边花草

版本&#xff1a;3.8.5 实现目标&#xff1a;给3d道路生成路边景观花草 在场景下创建一个节点&#xff0c;我这里种植两种花草模型&#xff0c;兰花和菊花&#xff0c;所以分别在节点下另创建两个节点&#xff0c;为了静态合批。 1.将花草模型分别拖入场景中&#xff0c;制作…

Langchain中的表格解析:RAG 和表格的爱恨情仇

实现 RAG(Retrieval-Augmented Generation)是一个挑战,尤其是在有效解析和理解非结构化文档中的表格时。这在处理扫描文档或图像格式的文档时尤为困难。这些挑战至少包括以下三个方面: 1.表格的“叛逆期”:不准确的解析可能会破坏表格结构: 表格在文档里就像个叛逆的青少…

CAT1模块 EC800M HTTP 使用后续记录

记录一下 CAT1 模块EC800 HTTP 使用后续遇到的问题 by 矜辰所致目录 前言一、一些功能的完善1.1 新的交互指令添加1.2 连不上网络处理 二、问题出现三、分析及解决3.1 定位问题3.2 问题分析与解决3.2.1 查看变量在内存中的位置 3.3 数据类型说明3.3.1 常用格式化输出符号…