Scrapy XPath 页面上的所有链接

2023-12-23

我正在尝试使用 Scrapy 收集某个域下的所有 URL。我试图使用 CrawlSpider 从主页开始抓取他们的网络。对于每个页面,我想使用 Xpath 提取所有的 href。并以键值对等格式存储数据。

键:当前Url 值:该页面上的所有链接。

class MySpider(CrawlSpider):
    name = 'abc.com'
    allowed_domains = ['abc.com']
    start_urls = ['http://www.abc.com']

    rules = (Rule(SgmlLinkExtractor()), )
    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        item = AbcItem()
        item['key'] = response.url 
        item['value'] = hxs.select('//a/@href').extract()
        return item 

我定义我的 AbcItem() 如下所示:

从 scrapy.item 导入项目、字段

class AbcItem(Item):

    # key: url
    # value: list of links existing in the key url
    key = Field()
    value = Field()
    pass

当我像这样运行我的代码时:

nohup scrapy crawl abc.com -o output -t csv &

机器人似乎开始爬行,我可以看到 nohup.out 文件被所有配置日志填充,但我的输出文件中没有信息..这就是我想要收集的信息,任何人都可以帮助我吗?我的机器人可能出了什么问题?


您应该为规则定义回调。这是获取所有链接的示例twitter.com主页 (follow=False):

from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.item import Item, Field


class MyItem(Item):
    url= Field()


class MySpider(CrawlSpider):
    name = 'twitter.com'
    allowed_domains = ['twitter.com']
    start_urls = ['http://www.twitter.com']

    rules = (Rule(SgmlLinkExtractor(), callback='parse_url', follow=False), )

    def parse_url(self, response):
        item = MyItem()
        item['url'] = response.url
        return item

然后,在输出文件中,我看到:

http://status.twitter.com/
https://twitter.com/
http://support.twitter.com/forums/26810/entries/78525
http://support.twitter.com/articles/14226-how-to-find-your-twitter-short-code-or-long-code
...

希望有帮助。

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

Scrapy XPath 页面上的所有链接 的相关文章

随机推荐

  • Plotly:如何自定义图例?

    我已经自定义了使用plotly绘制的数据点的颜色 数据点的颜色是根据与其关联的标签指定的 不过设置之后legend True所有三种颜色 在字典中定义 都不会显示在图中 我想 a rgb 147 112 219 the actual col
  • iOS PhoneGap 构建失败

    我是新来的PhoneGap适用于 iOS 和 Xcode 我的应用程序在 Android 手机上运行良好 但遇到了问题 我能够在 iOS 模拟器中构建并运行该应用程序 但是当我将其存档以在设备上进行测试时 出现以下错误 我到处搜索但找不到有
  • JQuery Mobile,整个网站的一个页脚片段

    I m not询问如何获得固定页脚 我有一个多页和单页的结构 我想知道如何在整个网站中仅使用一个 html 片段 我真的在寻找一种解决方案 因为我想仅在一个位置编辑页脚并在所有页面中查看修改 Thanks 编辑 我正在开发一个用 Phone
  • 为什么 VisualVM 探查器中没有显示所有方法?

    我在用VisualVM看看我的应用程序在哪里慢 但它并没有显示所有方法 可能没有显示所有延迟应用程序的方法 我有一个实时应用程序 声音处理 并且有几百微秒的时间不足 有没有可能VisualVM隐藏本身速度很快的方法 UPDATE 1 我通过
  • 使用 PK 反馈循环复制行

    鉴于以下情况 表1 Id Field1 Field2 NULL 1 2 NULL 3 4 我想将 Field1 和 Field2 的值插入到另一个表 Table2 中 Table2 有一个自增整数主键 我想从表 2 中检索新的 PK 并更新
  • 由于访问控制列表,SSRS 401.3 错误访问被拒绝

    卸载 Oracle 10 客户端 安全补丁后 不知道是什么触发了它 我在用户访问我们的 SSRS 测试服务器时遇到了问题 首先发生的事情是 SQL 服务和 SSRS 服务拒绝在 NT AUTHORITY SYSTEM 下启动 当我将其更改为
  • 无法使用 dotnet CLI 和 nuspec 文件打包 NuGet 包

    我有几个项目正在从 NET Framework 4 7 迁移到 NET Standard 2 0 结果 我正在尝试使用dotnet pack命令来创建我的 NuGet 包 同时使用我的nuspec带有令牌的文件 我有几个自定义构建脚本可以为
  • 匹配引用的 csv 中的未转义引号

    我查看了几篇具有类似标题的 Stack Overflow 帖子 但没有一个已接受的答案对我有用 我有一个 CSV 文件 其中数据的每个 单元格 均由逗号分隔并被引用 包括数字 每行以换行符结束 一些文本 单元格 中有引号 我想使用正则表达式
  • ngrx 订阅存储不会在状态更改时更新 Angular 5

    我正在构建一个应用程序 它将城市名称发送到 api 端点并返回该城市的天气 它使用两个操作 一个将更新城市 使用名称作为有效负载 第二个操作加载返回的新数组以更新状态 该效果使用 switchMap 映射 api 调用然后返回结果 用于显示
  • jsf隐式对象cc和组件之间的区别

    也许这是一个愚蠢的问题 但我用 cc 引用复合组件 例如 cc attrs randomAttr 但我也看到了 component 隐式对象 我使用它是因为我被告知要这样做 但我不太明白它的用途 谁能解释一下吗 cc指评估时正在处理的顶级复
  • 在没有内置函数的情况下按降序排列文件中的元素

    我按照冒泡排序重新编写了程序 def main try array file open input Please enter the name of the file you wish to open A file read split f
  • SASS 和 SCSS 变量名称的合法字符

    SCSS 变量名称中可以使用哪些字符 如果你查看源代码SASS 词法分析器 https github com nex3 sass blob stable lib sass script lexer rb 你会看到的 A hash of re
  • 有没有办法检测 NaN 和 -NaN?

    我想将 lua 数字保存到字符串和句柄中NaN大小写正确 检测任何 NaN 都很容易 x x 然而 我发现只有一种检测方法是NaN or NaN是使用tostring x nan 有更好的方法吗 代替tostring x nan 不方便携带
  • Swift Calendar.当前内存泄漏?

    我在应用程序中遇到了内存问题 我已经能够将其分解为 NSCalendar 一个简单的视图控制器如下所示 class ViewController UIViewController override func viewDidLoad supe
  • 使用输入元素上的修饰键触发单击事件

    我正在为某些功能编写测试 其中涉及用户按住 Shift 键并单击复选框 我在用着 input trigger Event click shiftKey true 来模拟那个 但是当事件监听器被调用时 event shiftKey财产总是被报
  • 如何使用 javascript (jquery) 将整数值添加到返回字符串的值?

    我有一个简单的 html 块 例如 span 8 span 我尝试使用 jquery 将 1 添加到值 8 var currentValue replies text var newValue currentValue 1 replies
  • Win32 命名管道和消息大小限制 - 旧的 64K 限制是否仍然适用?

    Win32 过去对消息模式管道的消息大小限制为 64K 正如 KB 文章的残余所证明的那样Q119218 PRB 命名管道 Write 限制为 64K https support microsoft com en us kb 119218
  • BeautifulSoup:如何显示不显示的div的内部?

    我是 BeautifulSoup 的新手 我有一些我不明白的问题 我认为这个问题可能已经得到解答 但我找到的答案在这种情况下都没有帮助我 我需要访问 div 的内部来检索网站的词汇表条目 但是该 div 的内部似乎根本 不显示 在 Beau
  • 如何在Powershell中比较关联数组?

    我有两个关联数组 a k1 v1 k2 k21 v21 b k1 v1 k2 k21 v21 我想知道有没有什么好的方法可以在不编写自己的函数的情况下进行比较 除了编写一个函数来比较每个键的值之外 我不知道有什么方法 如果该值不是原始对象
  • Scrapy XPath 页面上的所有链接

    我正在尝试使用 Scrapy 收集某个域下的所有 URL 我试图使用 CrawlSpider 从主页开始抓取他们的网络 对于每个页面 我想使用 Xpath 提取所有的 href 并以键值对等格式存储数据 键 当前Url 值 该页面上的所有链