当前位置: 首页 > 面试题库 >

使Scrapy跟踪链接并收集数据

太叔逸春
2023-03-14
问题内容

我试图用Scrapy编写程序以打开链接并从此标签收集数据:<p class="attrgroup"></p>

我设法使Scrapy从给定的URL收集了所有链接,但没有关注它们。任何帮助都非常感谢。


问题答案:

你需要Request为链接提供实例,分配回调并在回调中提取所需p元素的文本:

# -*- coding: utf-8 -*-
import scrapy


# item class included here 
class DmozItem(scrapy.Item):
    # define the fields for your item here like:
    link = scrapy.Field()
    attr = scrapy.Field()


class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["craigslist.org"]
    start_urls = [
    "http://chicago.craigslist.org/search/emd?"
    ]

    BASE_URL = 'http://chicago.craigslist.org/'

    def parse(self, response):
        links = response.xpath('//a[@class="hdrlnk"]/@href').extract()
        for link in links:
            absolute_url = self.BASE_URL + link
            yield scrapy.Request(absolute_url, callback=self.parse_attr)

    def parse_attr(self, response):
        item = DmozItem()
        item["link"] = response.url
        item["attr"] = "".join(response.xpath("//p[@class='attrgroup']//text()").extract())
        return item


 类似资料:
  • 本章展示如何配置Istio来自动收集mesh中服务的遥测数据。 在本章末尾,将为mesh中的服务调用启用新的metric和新的日志流。 BookInfo应用将作为介绍本章内容的示例应用。 开始之前 在集群中安装Istio并部署一个应用程序。 本章假设Mixer使用默认配置(--configDefaultNamespace=istio-system)。 如果使用不同的值,则更新这个任务中的配置和命令

  • 我需要审核用户使用hibernate对spring mvc web应用程序的所有访问。这包括每次用户查看对象中的数据时进行审核,即使用户没有对对象进行任何更改。 我一直在研究hibernate envers作为管理所有审计的潜在工具。我注意到envers会跟踪应用程序中每个对象的所有修改。这是我需要的一部分。但我找不到任何关于如何扩展envers的文档或教程,以便除了跟踪对对象的修改之外,还可以跟

  • 问题内容: 是否有一种特殊的机制来强制scrapy打印出所有python异常/堆栈跟踪。 我犯了一个简单的错误,即弄错了一个列表属性,导致AttributeError出现,该错误未在日志中完整显示: 因此它显示的AttributeError计数为1,但是没有告诉我在哪里以及如何进行操作,我不得不手动在代码中放置ipdb.set_trace()来找出哪里出错了。Scrapy本身继续执行其他线程而不打

  • 1.3.2. 跟踪数据 作为一个有安全意识的开发者,最重要的一件事就是随时跟踪数据。不只是要知道它是什么和它在哪里,还要知道它从哪里来,要到哪里去。有时候要做到这些是困难的,特别是当你对WEB的运做原理没有深入理解时。这也就是为什么尽管有些开发者在其它开发环境中很有经验,但他对WEB不是很有经验时,经常会犯错并制造安全漏洞。 大多数人在读取EMAIL时,一般不会被题为"Re: Hello"之类的垃

  • 本章介绍如何配置istio去自动收集mesh中的TCP服务指标。本章结尾部分,一个新的监控指标可以用mesh去调用TCP服务。 BookInfo应用作为介绍本章的示例应用。 开始之前 在集群中安装istio并部署一个应用。 本章假定BookInfo中的示例应用被部署在default命名空间中。如果部署在不同的命名空间,你需要修改例子中的配置和命令。 安装Prometheus插件,Prometheu

  • 跟踪行为控制着 Entity Framework Core 是否会在其变更跟踪器里维持实体实例的信息。如果实体是被跟踪的,任何检测到的该实体的变更都将在 SaveChanges() 时持久化到数据库中。Entity Framework Core 还会对已跟踪的、之前已加载到 DbContext 实例中的查询和实体进行相互的导航属性装配。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。