使用scrapy爬取数据

2023-10-26

安装scrapy(使用清华镜像)

打开PyCharm,安装scrapy框架

pip install  -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy

新建一个名为python_scrapy的项目

scrapy startproject python_scrapy 

完成后如下

 

目录介绍

这些文件分别是:

  • scrapy.cfg: 项目的配置文件。
  • mySpider/: 项目的Python模块,将会从这里引用代码。
  • mySpider/items.py: 项目的目标文件。
  • mySpider/pipelines.py: 项目的管道文件。
  • mySpider/settings.py: 项目的设置文件。
  • mySpider/spiders/: 存储爬虫代码目录。

编写爬虫名为itcast的爬虫。语法如下:

cd mySpider #首先进入该文件夹
scrapy genspider itcast "itcast" #创建爬虫

修改Itrms.py,代码如下:

class PythonScrapyItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    name = scrapy.Field()
    title = scrapy.Field()
    info = scrapy.Field()

修改itcast代码如下:

import scrapy
# from scrapy.item import PythonScrapyItem

from ..items import *


class ItcastSpider(scrapy.Spider):
    name = 'itcast'
    allowed_domains = ['itcast.cn']
    start_urls = ['http://www.itcast.cn/channel/teacher.shtml']

    def start_requests(self):
        for url in self.start_urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        items = []
        for each in response.xpath("//div[@class='li_txt']"):
            item = PythonScrapyItem()
            name = each.xpath("h3/text()").extract()
            title = each.xpath("h4/text()").extract()
            info = each.xpath("p/text()").extract()
            # xpath返回的是包含一个元素的列表
            item['name'] = name[0]
            item['title'] = title[0]
            item['info'] = info[0]
            items.append(item)
            # 直接返回最后数据
        return items
        
        

执行代码:

scrapy crawl itcast #itcast为爬虫名称

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用scrapy爬取数据 的相关文章

  • Django:模拟模型上的字段

    如何将模拟对象分配给该模型上的用户字段 无论如何都要绕过 SomeModel user 必须是 User 实例 检查吗 class SomeModel models Model user models ForeignKey User 我不会
  • Python setuptools:如何在 setup.py 中添加私有存储库 (gitlab)?

    我上传了 2 个包 它们位于我的 gitlab 存储库中 如果我想使用 pip 将它们安装在我的系统中 这很容易 因为 gitlab 可以帮助您 https docs gitlab com ee user packages pypi rep
  • xlrd.biffh.XLRDError:Excel xlsx 文件;不支持[重复]

    这个问题在这里已经有答案了 我正在尝试使用读取启用宏的 Excel 工作表pandas read excel与 xlrd 库 它在本地运行良好 但是当我尝试将其推送到 PCF 时 我收到此错误 2020 12 11T21 09 53 441
  • JavaScript 相当于 Python 的参数化 string.format() 函数

    这是 Python 示例 gt gt gt Coordinates latitude longitude format latitude 37 24N longitude 115 81W Coordinates 37 24N 115 81W
  • for 循环如何评估其参数

    我的问题很简单 Does a for循环评估它每次使用的参数 Such as for i in range 300 python 是否会为此循环的每次迭代创建一个包含 300 个项目的列表 如果是的话 这是避免这种情况的方法吗 lst ra
  • Jupyter Notebooks 不显示进度条

    我正在尝试在 Jupyter 笔记本中显示进度条 这是一台新电脑 我通常做的事情似乎不起作用 from tqdm import tqdm notebook example iter 1 2 3 4 5 for rec in tqdm not
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 如何在 PyCharm 4.5.2 中使用 PyPy 作为标准/默认解释器?

    如何在 PyCharm 4 5 2 中使用 PyPy 作为标准 默认解释器 一切都在 Ubunutu 14 10 下运行 并且 pypy 已经安装 您可以在项目的设置下进行配置 这个官方文档直接涵盖了 https www jetbrains
  • 更新 Sqlalchemy 中的多个列

    我有一个在 Flask 上运行的应用程序 并使用 sqlalchemy 与数据库交互 我想用用户指定的值更新表的列 我正在使用的查询是 def update table value1 value2 value3 query update T
  • 更改 Altair 中的构面标题位置?

    如何将方面标题 在本例中为年份 移动到每个图的上方 默认值似乎位于图表的一侧 这可以轻易改变吗 import altair as alt from vega datasets import data df data seattle weat
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • WindowsError:[错误 126] 使用 ctypes 加载操作系统时

    python代码无法在Windows 7平台上运行 def libSO lib ctypes cdll LoadLibrary ConsoleApplication2 so lib cfoo2 1 3 当我尝试运行它时 得到来自python
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • Apache Spark 中的高效字符串匹配

    我使用 OCR 工具从屏幕截图中提取文本 每个大约 1 5 句话 然而 当手动验证提取的文本时 我注意到时不时会出现一些错误 鉴于文本 你好 我真的很喜欢 Spark 我注意到 1 像 I 和 l 这样的字母被 替换 2 表情符号未被正确提
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • PyTorch DataLoader 对并行运行的批次使用相同的随机种子

    有一个bug https tanelp github io posts a bug that plagues thousands of open source ml projects 在 PyTorch Numpy 中 当并行加载批次时Da
  • 将文本注释到轴并对齐为圆

    我正在尝试在轴上绘制文本并将该文本与圆对齐 更准确地说 有一些具有不同坐标 x y 的点位于该圆内 并使用以下命令创建 ax scatter x y s 100 我想用圆圈连接并标记每个点 Cnameb 文本的坐标由 xp yp 定义 因此
  • 由于 json 字符串化 dict 键导致数据丢失

    考虑下面的例子 gt gt gt import json gt gt gt d 0 potato 0 spud gt gt gt json dumps d 0 potato 0 spud gt gt gt json loads json d
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • ASP.NET IIS 注册工具 (Aspnet_regiis.exe)

    当在一台计算机上安装了多个 ASP NET 版本时 就说 ASP NET 是并行运行的 在此安装中 Internet 信息服务 IIS 需要知道哪个 ASP NET ISAPI aspnet isapi dll 版本应该处理 ASP NET
  • k8s集群中部署服务之Dockerfile文件准备

    微服务项目各微服务Dockerfile文件准备 一 获取jar的方法 二 各微服务Dockerfile文件准备 2 1 mall auth FROM openjdk 8 ENV TZ Asia Shanghai EXPOSE 30000 V
  • 计算机专业论文选题网站方面,5大网站汇总,搞定新颖的计算机专业毕业设计网站汇总...

    原标题 5大网站汇总 搞定新颖的计算机专业毕业设计网站汇总 2021年了 很多计算机专业的同学都会问 我不想再做XX管理系统 XX选课系统了 哪里有一些新颖的毕业设计题目可以参考 或者做新颖的毕业设计应该浏览哪些网站 笔者根据自己的经验 给
  • 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集

    机器学习 数据挖掘 数据集划分 训练集 验证集 测试集 Q 如何将数据集划分为测试数据集和训练数据集 A three ways 1 像sklearn一样 提供一个将数据集切分成训练集和测试集的函数 默认是把数据集的75 作为训练集 把数据集
  • 书写我的人生回忆录-这应该是给父母最好的礼物

    作为一个业余的软件开发爱好者 我又捣鼓了一个有意思的小东西 使用完全免费哈 书写我的人生回忆录 是一款软件 其中包含70个问题 涵盖了父母的个人喜好 家庭 工作 人生经历和态度等方面 通过回答这些问题 您的父母将有机会反思他们的人生 并与您
  • Faster Rcnn 代码解读之 config.py

    from future import absolute import from future import division from future import print function import os import os pat
  • unordered_map详解

    p include stdafx h include p
  • spark基本知识点之内存管理

    原地址 点击打开链接 Spark Memory Management 25 Replies Starting Apache Spark version 1 6 0 memory management model has changed Th
  • GIS项目启动时手动添加依赖

    gis项目在idea下启动前需要手动安装的包 mvn install install file DgroupId org geotools jdbc DartifactId gt jdbc oracle Dversion 18 2 Dpac
  • centOs 6.5 ssh配置无密码登入

    1 安装ssh 若没安装的话 sudo apt get install ssh 2 配置为可以免密码登陆本机 2 1查看在master用户下是否存在 ssh文件夹 ssh前面有 的是隐藏文件夹 输入命令ls a home master 我的
  • omnifocus3透视 任务分类实例详解

    目录 1任务分类 2标签 任务细化的一种属性 3任务分类实例详解 4透视 上大学之前 好巧 今天9号 高考结束 我们每周的任务数量很明确 本学期几本书的学习 复习 但是步入社会之后 参与项目数量逐渐增加 需要沟通的人也越来越复杂 每日任务不
  • 认识 ESP-IDF-v4.3+工程结构(ESP32-C3应用调整示例)

    ESP32 C3 学习测试到今天 一直在使用 ESP IDF 的框架 但是还从来没有注意过工程结构 遇到复杂一点的项目 工程结构就显得太乱了 本文就来了解下 ESP IDF 工程结构 目录 前言 一 ESP IDF工程基本框架 1 1 工程
  • 数学是成就卓越开发人员的必备技能

    本文转载至 http blog jobbole com 444 编者按 原文作者Alan Skorkin是一名软件开发人员 他在博客中分享对软件开发相关的心得 其中有很多优秀的文章 本文就是其中一篇 作者认为 成为优秀的开发人员 可以没有数
  • javaEE企业级框架ssm知识点整合【思维导图】

    ssm Spring SpringMVC Mybatis 框架是轻量级javaEE应用开发最受欢迎的一种组合框架之一 使用这种框架的项目使JavaEE架构具有高度可维护性和可扩展性 同时极大地提高了项目的开发效率 降低了开发和维护的成本 而
  • webkit和webkit2的区别

    转自 http blog csdn net shunzi 1984 article details 6196483 原文地址 https trac webkit org wiki WebKit2 webkit2为了在API层支持多进程改变了
  • Linux “/“ 分区扩容

    前言 扩容是一项很简单的工作 但是有时候因为长时间没有操作过扩容 指令会比较生疏 因此写一篇扩容的文档 方便在再次失忆的情况下能快速回忆起操作流程 逻辑卷扩容的流程 创建PV gt 扩容VG gt 扩容LV 以下是扩容的详细流程 1 查看当
  • 人工智能梯度下降的优化器SGD、Momentum、AdaGrad、Adam的数学原理以及无框架实现

    系列文章目录 人工智能 梯度下降的原理和手写实现 文章目录 系列文章目录 前言 一 梯度下降优化器是什么 二 SGD优化方法 1 SGD是什么 2 SGD的数学原理 3 SGD的实现 4 SGD的缺陷 三 Momentum优化方法 1 Mo
  • 为什么公司规定所有接口都必须加上分布式锁,你知道吗?

    上一篇文章我们聊了聊Redisson这个开源框架对Redis分布式锁的实现原理 如果有不了解的兄弟可以看一下 都2022年了 出去面试连分布式锁的源码你都不会画 今天就给大家聊一个有意思的话题 每秒上千订单场景下 如何对分布式锁的并发能力进
  • 如何通过代码获取framedebugger里面的drawcall信息

    最近想做个性能工具 用来分析当前drawcall里面的具体调用 不知道unity有没有获取数据的具体接口 不过framedebugger里面的确有相关数据 这是方案一 另外一个方案是hook 理论上应该参考下renderdoc的实现应该就可
  • 使用scrapy爬取数据

    安装scrapy 使用清华镜像 打开PyCharm 安装scrapy框架 pip install i https pypi tuna tsinghua edu cn simple scrapy 新建一个名为python scrapy的项目