【问题标题】:printing 'response' from scrapy request从scrapy请求打印“响应”
【发布时间】:2017-07-03 14:34:58
【问题描述】:

我正在尝试学习scrapy,并且在学习教程的同时,我正在尝试进行细微的调整。

我只想从请求中获取响应内容。然后我会将响应传递到教程代码中,但我无法发出请求并获取响应的内容。建议会很好

from scrapy.http import Response

url = "https://www.myUrl.com"
response = Response(url=url)
print response # <200 myurl.com> 

# but i want the content! and I cant find the method

【问题讨论】:

标签: python python-2.7 scrapy


【解决方案1】:

如果你只想打印所有内容:

print response.text

【讨论】:

    【解决方案2】:

    我同意 granito 的观点。要指出的是,即使只涵盖框架本身,说 Scrapy 可以概括仍然是一个艰难的选择……只有在阅读教程时,您才会更好地理解!看看你拥有的最好的学习资源是你的逻辑、奉献精神和谷歌。通过您的代码 sn-p,我可以告诉您来自使用一些很棒的 bs4!你可以在一个scrapy spider中使用......我可以告诉你你真的刚刚开始学习......就像最近一样,没有定义一个蜘蛛类或命名它和老兄!没有错!

    至于你关于获取内容的问题,它再次回顾了编写的任何scrapy教程......数据挖掘/scrapy 99.9% 就是这个,选择什么日期如何?

    使用您的蜘蛛中的页面 CSS 元素,您在其中定义了一个项目 >it,使用页面响应或您的变异(您的新更改 > 版本关闭)您可以将其导出为收益或返回函数。 . 对于日志目的,打印通常做得更多 这个 elmente 可能是一个链接,只是文本......一个文件??

    以与 css 相同的方式使用 xpath,但它们的结构不同

    使用正则表达式几乎是必须的,但让我们迈出小步。

    ...整个数据挖掘都是为了提取您的内容,我觉得好像在抢夺您自己的时间,所以告诉您。从官方scrapy docs做教程,称为引文教程......如果你还有任何疑问该教程中发生了什么我会分享我的课程(我得到报酬......但没有你免费..) 在这个inro步骤上......但是伙计......它基本上对css知之甚少......如何使用网络浏览器检查工具,或者老派它并查看源代码......我真的希望我能提供帮助,我的书呆子感觉是刺痛,但我可以带你顿悟……打赌有些人会……但你一无所获,对吧?

    PS:

    关于您获取内容的第一个问题.... 喜欢,全部?整个html?正文,只是所有链接,或者只是包含 X 的链接。可以说是在谈论一个简单的博客页面...有文章标题日期,里面有链接图片。我确定您知道,当您说页面内容时,您指的是整个页面。您挖掘的数据将仅与您可以表达的格式一样有价值我们的朋友 Granito-Whachamacallhim.... response.body

    【讨论】:

      【解决方案3】:

      Scrapy 是一个有点复杂的框架。您不能只是在此处以您想要的方式创建请求和响应。
      Scrapy 被分成几个部分,比如下载器部分,它在调度器部分下载请求时间表 - 简而言之,您需要在代码中启动所有这些部分才能简单地获得这样的请求。

      你可以看到整个复杂架构的插图和描述here

      您可以做的只是使用scrapy shell 命令下载 url 内容并让您与之交互:

      $ scrapy shell "http://stackoverflow.com"
      ....
      [s] Available Scrapy objects:
      [s]   scrapy     scrapy module (contains scrapy.Request, scrapy.Selector, etc)
      [s]   crawler    <scrapy.crawler.Crawler object at 0x7f14d9fef5f8>
      [s]   item       {}
      [s]   request    <GET http://stackoverflow.com>
      [s]   response   <200 http://stackoverflow.com>
      [s]   settings   <scrapy.settings.Settings object at 0x7f14d8d0f9e8>
      [s]   spider     <DefaultSpider 'default' at 0x7f14d8af4f28>
      [s] Useful shortcuts:
      [s]   fetch(url[, redirect=True]) Fetch URL and update local objects (by default, redirects are followed)
      [s]   fetch(req)                  Fetch a scrapy.Request and update local objects 
      [s]   shelp()           Shell help (print this help)
      [s]   view(response)    View response in a browser
      In [1]: len(response.body)
      Out[1]: 244649
      

      另一种选择是编写一个蜘蛛并将inspect_response() 注入到您的解析函数中。

      import scrapy 
      from scrapy.shell import inspect_response
      
      class MySpider(scrapy.Spider):
          name = 'myspider'
          start_urls = ['http://stackoverflow.com',]
      
          def parse(self, response):
              inspect_response(response, self)
              # shell will open up here just like from the first example
      

      【讨论】:

      • 这是一个很好的描述,希望scrapy团队记下并开始写这样的文档!
      猜你喜欢
      • 2015-01-26
      • 2013-04-11
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多