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

Python爬虫---Scrapy项目的创建及运行

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖
掘,信息处理或存储历史数据等一系列的程序中。

1. 安装scrapy:

pip install scrapy

注意:需要安装在python解释器相同的位置,例如:D:\Program Files\Python3.11.4\Scripts

若安装时报错缺少twisted,解决方法:安装twisted合适的版本  twisted下载路径

下载 twisted后,安装twisted:pip install twisted路径

 查看python版本:终端输入python

若报错win32错误,解决方法:pip install pypiwin32

若是仍然报错,可安装anaconda,若使用anaconda,pycharm里的解释器也需要换成anaconda的的路径  Anaconda 安装

(注意:安装anaconda时,安装路径下不能有任何文件,否则可能会导致不能用  )

2.  使用scrapy创建项目:

scrapy startproject 项目名字         (项目名字不能用数字开头,不能包含中文)

项目结构:
spidersinit_.py自定义的爬虫文件.py   ---》由我们自己创建,是实现爬虫核心功能的文件
init__.py
items.py          ---》定义数据结构的地方(爬取的数据有哪些),是一个继承自                scrapy.Item的类
middlewares.py    ---》中间件 代理
pipelines.py      ---》管道文件,里面只有一个类,用于处理下载数据的,后续处理默认是300优先级,值越小优先级越高 (1-10)
settings.py       ---》配置文件 比如: 是否遵守robots协议,user-Agent定义等

3.  创建爬虫文件

在spiders下创建,进入spiders目录: cd .\项目名字\项目名字\spiders

 scripy genspider 爬虫文件的名字  要爬取的网页       (一般情况下不需要添加http协议)

 

4.  运行爬虫程序 

scrapy crawl 爬虫的名字     (名字为程序中的name)

 

 例子:

# spider下的爬虫文件
import scrapyclass TongchengSpider(scrapy.Spider):name = "tongcheng"allowed_domains = ["https://sz.58.com/sou/?key=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&classpolicy=classify_E%2Cuuid_YZWJGz6dw5SYe54A6jYeyfiY5J4TPdc8&search_uuid=YZWJGz6dw5SYe54A6jYeyfiY5J4TPdc8&search_type=input"]start_urls = ["https://sz.58.com/sou/?key=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91&classpolicy=classify_E%2Cuuid_YZWJGz6dw5SYe54A6jYeyfiY5J4TPdc8&search_uuid=YZWJGz6dw5SYe54A6jYeyfiY5J4TPdc8&search_type=input"]def parse(self, response):print("学习scrapy")content = response.text   # 获取的是响应的字符串content1 = response.body  # 获取的是二进制数据# span = response.xpath("xpath语法")  # 可以直接是xpath方法来解析response中的内容span = response.xpath('//div[@id="filter"]/div[@class="tabs"]/a/span')[0]  # xpathprint("=================================================================")print(span.extract())   # 提取seletor对象的data的属性值print(span.extract_first())  # 提取的seletor列表的第一个数据

相关文章:

Python爬虫---Scrapy项目的创建及运行

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖 掘,信息处理或存储历史数据等一系列的程序中。 1. 安装scrapy: pip install scrapy 注意:需要安装在python解释器相同的位置,例如&#xf…...

PyTorch: torch.nn 子模块及其在循环神经网络中的应用

目录 torch.nn子模块详解 nn.utils.rnn.PackedSequence 参数说明 注意事项 示例代码 nn.utils.rnn.pack_padded_sequence 参数说明 返回值 注意事项 示例代码 nn.utils.rnn.pad_packed_sequence 参数说明 返回值 注意事项 示例代码 nn.utils.rnn.pad_sequence …...

【QT】自定义代理类

目录 1 我们为什么要使用自定义代理类? 2 自定义代理类的基本设计要求 3 自定义代理的功能 4 基于QSpinBox的自定义代理类 5 自定义代理类的使用 1 我们为什么要使用自定义代理类? 传统的模型-视图框架可以让我们实现逻辑展示相分离,我们…...

线程休眠、线程让步、线程优先级相关内容学习笔记

1、线程休眠 (1)sleep() 如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态(Timed_Waiting),则可以通过调用Thread类的静态sleep()方法来实现。 static void sleep(long millis):让当前正在执行的线…...

paddle指定运行gpu

在PaddlePaddle中指定使用GPU进行运行非常简单。首先,确保你的机器上已经安装了CUDA和cuDNN,并且正确配置了GPU环境。然后,按照以下步骤进行操作: 导入PaddlePaddle库: import paddle设置使用的设备为GPU&#xff1a…...

Java异常及网络编程

异常续 throws关键字 当一个方法中使用throw抛出一个非RuntimeException的异常时,就要在该方法上使用throws声明这个异常的抛出。此时调用该方法的代码就必须处理这个异常,否则编译不通过。 package exception; ​ /*** 测试异常的抛出*/ public clas…...

通过 Elastic Stack 充分利用电信领域生成式 AI 的力量

作者:Elastic Piotr Kobziakowski, Jrgen Obermann 在瞬息万变的电信领域,Elastic Stack 与生成式 AI 的集成正在开创运营效率和创新的新时代。 这些技术不仅增强了网络运营,而且还彻底改变了各个部门的内部流程。 下面,我们将深入…...

Redis:原理速成+项目实战——Redis实战8(基于Redis的分布式锁及优化)

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理速成项目实战——Redis实战7(优惠券秒杀细节解决超卖、一人一单问题) &#x1f4d…...

江山易改本性难移之ZYNQ SDK QSPI固化bug及其解决方法

之前在Vivado2018.3通过QSPI方式固化程序时出现问题,显示flash擦除成功,但最后总是不能写入到flash中。 查资料发现从VIVADO 2017.3版本开始,Xilinx官方为了使Zynq-7000和Zynq UltraScale 实现流程相同,在QSPI FLASH使用上做了变化…...

系列三十六、注解版Spring、SpringMVC配置文件

一、注解版Spring、SpringMVC配置文件 1.1、pom <dependencies><!-- SpringMVC --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.5.RELEASE</version><…...

爬虫你需要知道的:什么是http请求

1. 什么是http请求 我们将通过发送http请求来获取网页内容。http是HyperText Transfer Protocol的缩写&#xff0c;意思是超文本传输协议&#xff0c;它是一种客户端和服务器之间的请求响应协议。 浏览器就可以看作是一个客户端&#xff0c;当我们在浏览器地址栏输入想访问的…...

MCU FT61F14x入门

目录 前言一、CMIDE的使用二、系统时钟与睡眠2.1 上电复位 (POR)与系统复位2.2 振荡器和系统时钟2.3 SLEEP睡眠模式 (POWER-DOWN)2.4 低电压检测/比较器 (LVD) 三、I/O端口与中断四、串口USART五、定时器六、ADC七、EEPROM 前言 FT61F14x是辉芒微电子的微控制器&#xff0c;是一…...

星火大模型——多模态API调用(图像+文本)

参考文档 图片理解 API 文档 环境配置 pip3 install websocket-client核心代码 import _thread as thread import base64 import datetime import hashlib import hmac import json from urllib.parse import urlparse import ssl from datetime import datetime from time…...

计算机基础面试题 |22.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

kafka连接失败时springboot项目启动停机问题

问题&#xff1a;springboot整合kafka&#xff0c;作为消费端&#xff0c;对端的kafka系统是在生产环境&#xff0c;在本地开发测试时配置了对端的生产环境的kafka地址。因为开发环境和对端生产环境是不通的&#xff0c;所以连接肯定是失败的&#xff0c;kafka的连接失败导致sp…...

【算法题】46. 全排列

题目 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例 2&#xff1a; 输入&#xff1…...

可视可交互!在全志H618上用OpenCV读取图像显示到PyQt5窗口上

OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据&#xff0c;在某些情况下&#xff0c;尽管OpenCV可以显示窗口&#xff0c;但PyQt5可能更适合用于创建复杂的交互式应用程序&#xff0c;而自带GPU的H618就成为了这些图像显示的最佳载体。 这里分享一个代码&#xff0…...

现代密码学 补充1:两种窃听不可区分实验的区别

两种窃听不可区分实验 写在最前面两种窃听不可区分实验1. 完美保密中的窃听不可区分实验2. 窃听不可区分实验&#xff08;对称加密算法&#xff09;主要区别 写在最前面 两种窃听不可区分实验 两种窃听不可区分实验&#xff08;Eavesdropping Indistinguishability Experimen…...

多功能号卡推广分销管理系统 流量卡推广分销网站源码-目前市面上最优雅的号卡系统

一套完善,多功能,的号卡分销系统,多接口,包括运营商接口,无限三级代理,最简单易用的PHP~ 目前市面上最优雅的号卡系统!没有之一 软件架构说明 环境要求php7.3以上(建议低于8.0),MySQL5.6以上,Nginx1.16(无要求) 产品特性 自动安装向导 易于安装使用部署 多个第…...

MySQL语法及IDEA使用MySQL大全

在项目中我们时常需要写SQL语句&#xff0c;或简单的使用注解直接开发&#xff0c;或使用XML进行动态SQL之类的相对困难的SQL&#xff0c;并在IDEA中操控我们的SQL&#xff0c;但网上大都图方便或者觉得太简单了&#xff0c;完全没一个涵盖两个方面的讲解。 单表&#xff1a; …...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...