我正在尝试学习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
答案 0 :(得分:4)
Scrapy是一个复杂的框架。您不能以您希望的方式创建请求和响应。
Scrapy分为几个部分,例如Downloader部分,它可以在Scheduler部分下载请求计划 - 简而言之,您需要在代码中启动所有这些部分,以便简单地获得这样的请求。
您可以查看整个复杂架构的插图和说明here
你可以做的只是使用scrapy shell
命令下载网址内容并让你与之互动:
$ 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
答案 1 :(得分:0)
我同意granito的事情......指出,即使只是覆盖框架本身,Scrapy可以总结仍然是一个艰难的赌注...你只会在阅读教程时更好地理解!看看你拥有的最好的学习资源是你的逻辑,奉献精神和谷歌。通过你的代码片段,我可以告诉你使用一些bs4,这很棒!你可以在scrapy蜘蛛中使用......我可以告诉你,你真的刚刚开始学习......就像最近一样,没有定义一类蜘蛛或命名它和老兄!没错呢!
至于你关于获取内容的问题,再次讨论任何scrapy教程...... datamining / scrapy只有99.9%这个,选择什么日期如何?
使用您定义项目的蜘蛛中的CSS元素&gt;它,使用页面响应或您的变异(您的新更改的&gt;版本关闭),您可以将其导出为收益或返回功能.. 对于日志目的,通常会进行更多的打印 这个elmente可能是一个链接,只是文本......文件??
以与css相同的方式使用xpath,但结构不同
使用正则表达式几乎肯定是必须的,但让我们采取步骤。
...整个数据挖掘是为了提取你的内容,我觉得好像是在抢夺你自己的时刻,所以告诉你。来自官方scrapy文档的教程,被称为引用教程......如果你还有任何问题,那么在该教程中发生了什么,我会分享我的课程(我得到报酬......但是没有你是免费的..) 在这个inro步骤...但是男人......它基本上对css知之甚少..如何使用网络浏览器检查工具,或旧学校它只是查看来源..我真的希望我能帮助,我的书呆子感觉是刺痛,但我可以带你一时顿悟...打赌有些人会...但你没有得到任何正确的答案?
关于获取内容的第一个问题....比如,所有?整个HTML?身体,只是所有链接,或只是包含X的链接..让我们说是一个简单的博客页面...有文章标题日期,链接图像里面。这一点你知道,就在你说页面内容时,你正在引用页面的本体。你挖掘的数据只会像表达它的格式一样有价值,更重要的是使用数据来对付其他数据来创建分析...如果你只想要整个html源,那么基于数据lol的结论我们的朋友Granito-Whachamacallhim .... response.body
答案 2 :(得分:0)
如果您只想打印所有内容:
print response.text