Scrapy递归下载内容

2023-12-01

敲了好几次头之后,我终于来到这里了。

问题:我正在尝试下载每个 craiglist 帖子的内容。我所说的内容是指“发布正文”,例如手机的描述。自 iPhone 以来寻找新的旧手机已经令人兴奋不已。

该代码是一项很棒的工作迈克尔·赫尔曼.

我的蜘蛛班

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import *
from craig.items import CraiglistSampleItem

class MySpider(CrawlSpider):
    name = "craigs"
    allowed_domains = ["craigslist.org"]
    start_urls = ["http://minneapolis.craigslist.org/moa/"]

    rules = (Rule (SgmlLinkExtractor(allow=("index\d00\.html", ),restrict_xpaths=('//p[@class="nextpage"]',))
    , callback="parse_items", follow= True),
    )

    def parse_items(self,response):
        hxs = HtmlXPathSelector(response)
        titles = hxs.select("//span[@class='pl']")
        items = []
        for titles in titles:
            item = CraiglistSampleItem()
            item ["title"] = titles.select("a/text()").extract()
            item ["link"] = titles.select("a/@href").extract()
            items.append(item)
        return items

和 Item 类

from scrapy.item import Item, Field

class CraiglistSampleItem(Item):
    title = Field()
    link = Field()

由于代码将遍历许多链接,因此我想将每部手机的描述保存在单独的 csv 中,但 csv 中多一列也可以。

任何线索!


而不是退回物品parse_items你应该返回/产生 scrapy 的方法Request实例以便从项目页面获取描述,link and title你可以通过一个Item, and Item里面的meta字典:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.http import Request
from scrapy.selector import *

from scrapy.item import Item, Field


class CraiglistSampleItem(Item):
    title = Field()
    link = Field()
    description = Field()


class MySpider(CrawlSpider):
    name = "craigs"
    allowed_domains = ["craigslist.org"]
    start_urls = ["http://minneapolis.craigslist.org/moa/"]

    rules = (Rule(SgmlLinkExtractor(allow=("index\d00\.html", ), restrict_xpaths=('//p[@class="nextpage"]',))
        , callback="parse_items", follow=True),
    )

    def parse_items(self, response):
        hxs = HtmlXPathSelector(response)

        titles = hxs.select("//span[@class='pl']")
        for title in titles:
            item = CraiglistSampleItem()
            item["title"] = title.select("a/text()").extract()[0]
            item["link"] = title.select("a/@href").extract()[0]

            url = "http://minneapolis.craigslist.org%s" % item["link"]
            yield Request(url=url, meta={'item': item}, callback=self.parse_item_page)

    def parse_item_page(self, response):
        hxs = HtmlXPathSelector(response)

        item = response.meta['item']
        item['description'] = hxs.select('//section[@id="postingbody"]/text()').extract()
        return item

运行它并查看附加内容description输出 csv 文件中的列。

希望有帮助。

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

Scrapy递归下载内容 的相关文章

随机推荐

  • Java Math.pow() 舍入误差

    我遇到了 我怀疑是 舍入错误的问题 我有一根绳子 0 686357E 01 我正在尝试将其转换为双精度 我已经能够使用将其拆分Pattern split 函数 我正在捕获基数和指数值 然而 一旦我尝试将它们适当相乘 我得到的结果是 0 06
  • 滚动时,推送列中的 Bootstrap Affix 菜单与 Safari 中的主要内容重叠

    这可能是 Bootstrap 本身的一个错误 但我仍然有兴趣看看是否有人可以提出修复或至少提供一些帮助 要直接跳到问题所在 请在 Safari 中打开此 jsfiddle 并开始向下滚动页面 http jsfiddle net davere
  • PreferredStatusBarStyle var 在 iOS12 中不起作用?

    Adding application statusBarStyle lightContent 我的 AppDelegate didFinishLaunchingWithOptions 方法未添加 override var preferred
  • 从我的 VB.NET 2008 项目访问 MySQL 数据库

    我用VB NET开发了一个项目 在这个项目中 我想使用驻留在我的 WEB 服务器中的 MySQL 中的数据 我可以与本地主机的 MySQL 服务器通信 但无法与 WEB 服务器通信 在我的 CPanel 中 我添加了主机远程数据库访问 但我
  • Delphi Xpath XML 查询

    我正在尝试找到的值在以下 XML 文件中使用XPath query
  • 查找具有所有公共中介的节点

    我正在创建一个我们匹配的系统orders to staff 从概念上讲 一个order是对人做一些工作的请求 并且staff是一个能够完成这项工作的人 一个order可以有一个或多个requirements 即对谁可以做这项工作的限制 以及
  • Ghostscript 灰度转换仍然包含颜色?

    如果 pdf 确实包含颜色 我需要将其转换为灰度 为此 我找到了一个脚本 可以确定 pdf 是否已经处于灰度状态 convert source pdf colorspace RGB unique colors txt 2 gt dev nu
  • 将 $_POST 与文本区域一起使用时出现问题

    我在网站上有一个简单的联系表单 有 2 个文本字段 1 个文本区域和 1 个隐藏字段 由于某种原因 除文本区域之外的所有字段都 POST 到 PHP 脚本 我以前已经这样做过一千次了 但从来没有遇到过这个问题 这是我的 HTML
  • 在没有 Office 365 订阅的情况下使用 Azure 多租户应用程序来访问用户日历信息

    我们编写了一个服务应用程序 该应用程序从组织 租户 的多个日历中读取 Office 365 日历信息 并对条目进行一些分析 为此 我们使用 Office 365 REST API 我们有多个客户组织 租户 需要此功能 因此我已按照以下步骤操
  • 在大型数据库中如何优化数据库这个查询?

    Query SELECT id FROM user tmp WHERE code 9s5xs1sy AND go NOT REGEXP http www xxxx example com aflam http xx example com
  • 使用特定字符在 Python 中拆分字符串

    我正在尝试按特定字符分割输入的文档 我需要在 和 处将它们分开 但我很难弄清楚这一点 def main for x in docread words x split for word in words doclist append word
  • 如何使用GAE访问GCE上的mongodb

    我已经在 GAE 上部署了我的演示应用程序 并且与 mLab 一起正常工作 但是当我尝试在 GCE MongoDB Google Click to Deploy 上部署 mongodb 时 部署成功 但我不知道如何设置 URI我的应用程序在
  • 找不到我的实体框架数据库

    我对代码优先实体框架数据库有点困惑 我创建了一个新的 DbContext 和类 将其存储在该上下文中 如下所示 namespace MyProject Subproject Something public class MyItem pub
  • Android sqlite / BLOB 性能问题

    自从我将数据从 ArrayList 移动到 Android 上的 sqlite 数据库后 我的性能出现了严重下降 没有打开的游标可能会导致这种情况 因此我怀疑问题出在我存储在 BLOB 字段中的图像 该应用程序创建Cards有一个字段卡位图
  • 如何让 CMake 自动检测 CUDA_ARCHITECTURES 的值?

    较新版本的 CMake 3 18 及更高版本 了解 CUDA 代码编译目标的 CUDA 架构的选择 目标有一个CUDA ARCHITECTURES属性 设置后会生成适当的 gencode arch whatever code whateve
  • Java 安装程序 - 需要帮助[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 首先 您好 感谢您花时间帮
  • 使用Opencv提取图像的公共部分

    我正在编写一个程序来查找图像之间的差异 目前 我正在使用 AKAZE 寻找特征 因此我知道了这两张图像的共同点 问题是这两张图片只有一部分是共同的 如何从两幅图像中提取共同部分 为了更好的解释 我需要从第一张图像中提取公共部分 然后从第二张
  • 正则表达式以任意顺序匹配至少两个特殊字符

    我必须对密码进行 jQuery 表单验证 密码应至少包含两个特殊字符 任意顺序 我尝试过用于密码验证的正则表达式但它没有解决两个随机特殊字符可以按任意顺序出现的问题 如何使用 JavaScript 正则表达式来做到这一点 在不必要的情况下
  • asp.net mvc 中的 LINQ + EntityFunction

    我有这样的代码使用EntityFramework Alpha3 来自nuget class Member Key public int Key get set public string Forename get set public st
  • Scrapy递归下载内容

    敲了好几次头之后 我终于来到这里了 问题 我正在尝试下载每个 craiglist 帖子的内容 我所说的内容是指 发布正文 例如手机的描述 自 iPhone 以来寻找新的旧手机已经令人兴奋不已 该代码是一项很棒的工作迈克尔 赫尔曼 我的蜘蛛班