当前位置: 首页 > news >正文

Python学习第二十五天

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()

相关文章:

  • 10 个pygame经典小游戏
  • 装饰器模式 (Decorator Pattern)
  • SpringCloud消息总线:Bus事件广播与配置动态刷新
  • 基于硅基流动平台API构建定制化AI服务的实践指南
  • 大数据学习(88)-zookeeper实现的高可用(HA)
  • 【JSqlParser】Java使用JSqlParser解析SQL语句总结
  • 垃圾回收学习
  • “thrust“ has no member “device“
  • 视觉Transformer架构的前沿优化技术与高效部署
  • Linux 驱动总线中的 ACPI 设备匹配机制是怎么回事儿?【最大特点是设备的自动发现和热插拔性能良好】
  • vue 组件开发
  • C++运动控制卡开发实践指南
  • 【pm2运行ts的终极解决方案】使用pm2+ tsx 运行 TypeScript 文件指南
  • 3.25-3 request断言
  • 代码随想录算法训练营第二十天 | 字符串 | 反转字符串、替换空格、翻转字符串里的单词(很多基础方法)和左旋转字符串
  • Windows下docker使用教程
  • 【C++特殊类的设计】
  • 和鲸科技执行总裁殷自强受邀主讲华中附属同济医院大模型应用通识首期课程
  • 美摄科技开启智能汽车车内互动及娱乐解决方案2.0
  • 音乐webpack(通杀webpack-1)
  • 网站推广公司有哪些/免费技能培训网
  • 新闻类的网站有哪些类型/国内搜索引擎有哪些
  • 广西灵山县住房和城乡建设局网站/百度投诉电话客服24小时
  • 建设电商网站/如何在百度发广告推广
  • 深圳好的网站建设公/google搜索网址
  • 网站二维码收费怎么做/联合早报 即时消息