Scrapy在使用crawlerprocess运行时抛出错误

2024-07-01

我用 python 编写了一个脚本,使用 scrapy 来收集网站上不同帖子的名称及其链接。当我从命令行执行脚本时,它可以完美地工作。现在,我的意图是使用运行脚本CrawlerProcess()。我在不同的地方寻找类似的问题,但我找不到任何直接的解决方案或更接近的解决方案。但是,当我尝试按原样运行它时,出现以下错误:

从 stackoverflow.items 导入 StackoverflowItem ModuleNotFoundError:没有名为“stackoverflow”的模块

这是到目前为止我的脚本(stackoverflowspider.py):

from scrapy.crawler import CrawlerProcess
from stackoverflow.items import StackoverflowItem
from scrapy import Selector
import scrapy

class stackoverflowspider(scrapy.Spider):
    name = 'stackoverflow'
    start_urls = ['https://stackoverflow.com/questions/tagged/web-scraping']

    def parse(self,response):
        sel = Selector(response)
        items = []
        for link in sel.xpath("//*[@class='question-hyperlink']"):
            item = StackoverflowItem()
            item['name'] = link.xpath('.//text()').extract_first()
            item['url'] = link.xpath('.//@href').extract_first()
            items.append(item)
        return items

if __name__ == "__main__":
    c = CrawlerProcess({
        'USER_AGENT': 'Mozilla/5.0',   
    })
    c.crawl(stackoverflowspider)
    c.start()

items.py包括:

import scrapy

class StackoverflowItem(scrapy.Item):
    name = scrapy.Field()
    url = scrapy.Field()

这是树:点击查看层次结构 https://i.stack.imgur.com/abQQO.jpg

我知道我可以通过这种方式取得成功,但我只想用上面尝试的方式完成任务:

def parse(self,response):
    for link in sel.xpath("//*[@class='question-hyperlink']"):
        name = link.xpath('.//text()').extract_first()
        url = link.xpath('.//@href').extract_first()
        yield {"Name":name,"Link":url}

尽管@Dan-Dev 向我展示了一条通往正确方向的方法,但我决定提供一个对我来说完美无缺的完整解决方案。

除了我在下面粘贴的内容之外,无需更改任何其他内容:

import sys
#The following line (which leads to the folder containing "scrapy.cfg") fixed the problem
sys.path.append(r'C:\Users\WCS\Desktop\stackoverflow')
from scrapy.crawler import CrawlerProcess
from stackoverflow.items import StackoverflowItem
from scrapy import Selector
import scrapy


class stackoverflowspider(scrapy.Spider):
    name = 'stackoverflow'
    start_urls = ['https://stackoverflow.com/questions/tagged/web-scraping']

    def parse(self,response):
        sel = Selector(response)
        items = []
        for link in sel.xpath("//*[@class='question-hyperlink']"):
            item = StackoverflowItem()
            item['name'] = link.xpath('.//text()').extract_first()
            item['url'] = link.xpath('.//@href').extract_first()
            items.append(item)
        return items

if __name__ == "__main__":
    c = CrawlerProcess({
        'USER_AGENT': 'Mozilla/5.0',   
    })
    c.crawl(stackoverflowspider)
    c.start()

再次,在脚本中包含以下内容解决了问题

import sys
#The following line (which leads to the folder containing "scrapy.cfg") fixed the problem
sys.path.append(r'C:\Users\WCS\Desktop\stackoverflow')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy在使用crawlerprocess运行时抛出错误 的相关文章

  • 多处理冻结计算机

    我通过使用多处理提高了执行时间 但我不确定 PC 的行为是否正确 它会冻结系统 直到所有进程完成 我使用的是 Windows 7 和 Python 2 7 也许我做错了 这就是我所做的 def do big calculation sub
  • Flask - 在请求之间将值存储在内存中

    我有一个单页应用程序 前端是 Angularjs 后端是 Flask 它允许用户上传文件 xlsx csv 然后交互式地分析 查询文件 本质上 用户在第一次上传时将文件加载到内存中 然后后续的 ajax 调用将访问内存中的该文件 我不确定如
  • 如何在pytorch中使用多个GPU?

    我使用此命令来使用 GPU device torch device cuda 0 if torch cuda is available else cpu 但是 我想使用两个 GPUjupyter 像这样 device torch devic
  • TypedDict 中的 Python 任意键

    是否可以使用一组已知键创建 TypedDict 然后创建任意键的类型 例如 在 TypeScript 中 我可以这样做 interface Sample x boolean y number name string string Pytho
  • 无法从 BigQuery 中的工作表查询表

    我正在尝试在 python 中使用 BigQuery 来查询通过工作表生成的表 from google cloud import bigquery Prepare connexion and query bigquery client bi
  • 为什么追加会覆盖列表?

    我正在尝试 hackerrank 的一些问题并遇到了这个问题https www hackerrank com challenges list com经理 问题 https www hackerrank com challenges list
  • Python 中的一维马哈拉诺比斯距离

    我一直在努力validate我的计算代码马哈拉诺比斯距离写在Python 并仔细检查以比较 OpenCV 中的结果 我的数据点均为 1 维 5 行 x 1 列 In OpenCV C 我成功计算了马哈拉诺比斯距离方面数据点的尺寸为上述尺寸
  • 从周数获取日期

    请问我的代码有什么问题 import datetime d 2013 W26 r datetime datetime strptime d Y W W print r 显示 2013 01 01 00 00 00 谢谢 周数不足以生成日期
  • python中1+1可以等于3吗? [复制]

    这个问题在这里已经有答案了 在继续之前 我知道人们应该never做这个 这个问题纯粹是出于教育目的 我进行这个练习是为了更好地理解 python 的内部结构ctypes 以及它们如何工作 我知道在 python 中更改整数的值相对容易 其实
  • 与 Pandas DataFrame 列表列的比较

    我有一个像这样的数据框 df col1 col2 a 1 2 b 3 4 c 3 9 我想根据匹配的输入数组获取行 因此如果我有数组 1 2 我可以获得 col1 col2 a 1 2 当我尝试使用此公式执行此操作时 它不起作用 df lo
  • 为什么 a.insert(0,0) 比 a[0:0]=[0] 慢很多?

    使用列表的insert函数比使用切片分配实现相同效果要慢得多 gt python m timeit n 100000 s a a insert 0 0 100000 loops best of 5 19 2 usec per loop gt
  • Python:使用用户输入作为类名的类工厂

    我想动态地将类属性添加到超类 此外 我想创建动态继承自该超类的类 并且这些子类的名称应取决于用户输入 有一个超类 Unit 我可以在运行时向其添加属性 这已经有效了 def add attr cls name value setattr c
  • 使用后禁用按钮

    最近我决定重写我的不和谐机器人并添加按钮 到目前为止我遇到的主要问题是我无法禁用按钮就在被按下之后人们被告知是关于button disabled True实际上 它会禁用该按钮 但它只是将其发送为禁用状态 因此永远无法按下它 我想要的是能够
  • 在 Django 中保存文件之前更改文件名

    我有下一个代码在 django admin 中上传时重命名我的文件 在 models py 中 def get file path instance filename ext filename split 1 filename s s uu
  • 如何加快读取压缩 HDF5 文件的速度

    我有几个大的 HDF5 文件存储在 SSD 上 lzf 压缩文件大小为 10 15 GB 未压缩大小为 20 25 GB 将此类文件的内容读入 RAM 进行进一步处理每个文件大约需要 2 分钟 在此期间 仅使用一个核心 但达到 100 所以
  • 使用 Python API 创建文件后如何立即从 Google Vault 导出下载文件?

    使用 Python API 我创建了一个导出 如何使用相同的授权服务下载导出中的 zip 文件 创建导出时 我可以看到 cloudStorageSink 的 bucketName 和 objectNames 但是我找不到任何有关如何使用创建
  • 通过串口从python向Arduino发送数据

    如果在串行端口上读取字符 s 我试图让 Arduino 触发继电器 该字符 s 是由 python 根据从屏幕读取的图像发送的 我的问题是arduino似乎无法从串行端口读取 因为它从不执行if条件 我的猜测是两者之间存在某种死锁 这就是为
  • Python 中 NLTK 的命名实体识别。识别网元

    我需要将单词分类为词性 比如动词 名词 副词等等 我用的是 nltk word tokenize to identify word in a sentence nltk pos tag to identify the parts of sp
  • OpenCV中如何在点之间画线?

    我有一个元组数组 a 375 193 364 113 277 20 271 16 52 106 133 266 289 296 372 282 OpenCV中如何在点之间画线 这是我的代码不起作用 for index item in enu
  • 了解 pandas 中的 lambda 函数

    我正在尝试解决 Python 课程的问题 发现有人在 github 中实现了同一问题的解决方案 我只是想了解 github 中给出的解决方案 我有一个名为 Top15 的 pandas 数据框 包含 15 个国家 地区 数据框中的一列是 H

随机推荐

  • 使用递归求数字之和

    对Java来说相当陌生 但我正在编写一个教程 其中我必须使用递归找到用户输入整数的数字总和 到目前为止 这是我的代码 公开课其他 public static void main String arg Scanner s new Scanne
  • 无法使用带有 socket.io 的媒体源从媒体记录器跳转到流

    当首先加载视频观察客户端然后加载网络摄像头客户端时 以下代码可以正常工作 但是 如果顺序交换或以任何方式中断流 例如通过刷新任一客户端 则流将失败并且媒体源会将其就绪状态更改为关闭 我的假设是 在开始时接收的视频需要初始化标头才能启动 并且
  • R:使用字符串作为参数来改变 dplyr 中的动词

    我正在构建一个闪亮的应用程序 它需要允许用户定义新的绘图变量 具体来说 我想允许用户定义要在 mutate 动词中使用的表达式 服务器接收文本形式的表达式 我想知道如何让 mutate 在 dplyr 0 7 中执行它 我可以使用 muta
  • 循环不断在字符串中添加空格?

    我有以下代码 sHexPic string to hex sPic sHexPic insert sHexPic begin 2 sHexPic insert 2 我想知道如何将其放入计数循环中并在每第二个字符后添加一个空格 到目前为止 这
  • HTACCESS 404 错误无法正常工作

    问题 在此服务器上找不到请求的 URL welcome php 此外 尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误 事情是这样的 当我访问 www mysite com page 时它工作正常 如果
  • Symfony 管理生成器原则executeCreate

    感谢您对此的帮助 我对 Symfony 框架非常陌生 所以只是想了解一下它 我希望能够拦截从管理区域提交的表单并修改数据 这是我到目前为止所得到的 基本形式 apps backend modules proposition actions
  • Google Chrome/Safari 相同的浏览器名称和版本!

    我有一个 asp net 网站 我在其中检查支持的浏览器 那是我的用户 Request Browser Browser 浏览器名称 和 Request Browser MajorVersion 浏览器版本 这里的问题是浏览器 Safari
  • Drupal 用户配置文件页面中的自定义菜单选项卡

    我想在用户个人资料页面顶部的 查看 编辑 文件 菜单链接旁边添加一个菜单项 当用户单击它时 它的行为应该与其他页面类似 因为它不仅启动到新页面 而且他们单击的菜单项 我们称之为 时髦按钮 会变成灰色 并且用户仍停留在新页面中 用户个人资料区
  • 如何向 CSV 文件添加列?

    我有以下 CSV 文件 header 1 header 2 header 3 summin 1 summin 2 summin 3 summin 4 summin 5 summin 6 我如何使用 CSV 类附加一列数据 结果将如下所示 h
  • C# 中线程之间发送消息

    如何在线程之间发送和接收消息 例如 一种解决方案是共享并发队列 尽管它的名称 并发队列 http msdn microsoft com en us library dd267265 aspx 这将允许您将一个对象从一个线程入队 并让另一个线
  • JavaScript 作为 HTML 属性是不好的做法吗?

    例子 https stackoverflow com a 372 89566 710887 https stackoverflow com a 37289566 710887 我看到这种情况越来越频繁地发生 我总是被教导要将 javascr
  • Apache2:如何记录拒绝的连接和客户端超时

    我正在对使用 Apache2 运行的服务进行一些负载测试 我的负载测试工具的默认超时为 30 秒 当我以每秒 1 个请求的负载运行该工具一分钟时 它报告 40 个请求成功 并有 200 个 OK 响应 并且有 20 个请求被取消 因为等待标
  • Jmeter json 路径提取器 - 如何从提取的值中删除 [ ]

    From json questions tagged json token id token id 82903430 f9b3 4f4b 9efa ee1b991cb735 我正在提取token id using json question
  • A* 搜索算法

    我想澄清以下 A 搜索示例的一些内容 用红色省略号突出显示的部分是我不理解的区域 看起来 S B f 2 6 8已被采取 移动 复制自Expand S 上 并用于Expand A 看来还 S A X f 1 4 5 10已被采取 移动 复制
  • Typescript 字符串文字联合类型

    我有一个类属性 其类型是多个字符串文字的联合 public reaction haha wow angry sad like 我想做的是将这些字符串定义在某种数组的其他位置 然后在属性定义中使用该数组 所以像这样 allowedString
  • 将组合框双向绑定到静态属性

    编辑 所以 我想我的代码是正确的 您所有答案中的代码片段也是正确的 感谢那 我的问题是我的开发机器运行 NET4 5 其行为不同 同样的程序 针对 NET4 0 编译 在 NET4 0 的机器上运行正确 但在 NET4 5 的机器上运行不正
  • Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

    我已经使用转储了 mongodb 集合mongodump命令 输出是一个转储目录 其中包含以下文件 dump coll bson coll metadata json 如何将导出的文件打开到在 python 中工作的字典数组中 我尝试了以下
  • 使用 解释 gprof 输出

    我试图在我的程序中找到性能问题 从而通过分析来检测代码 gprof 创建一个如下所示的平面配置文件 Flat profile Each sample counts as 0 01 seconds cumulative self self t
  • 缺乏 CUDA 5 动态并行示例

    我一直在谷歌上搜索 只找到了一个简单的例子 http developer nvidia com sites default files akamai cuda files CUDADownloads TechBrief Dynamic Pa
  • Scrapy在使用crawlerprocess运行时抛出错误

    我用 python 编写了一个脚本 使用 scrapy 来收集网站上不同帖子的名称及其链接 当我从命令行执行脚本时 它可以完美地工作 现在 我的意图是使用运行脚本CrawlerProcess 我在不同的地方寻找类似的问题 但我找不到任何直接