簡體   English   中英

從 scrapy 請求中打印“響應”

[英]printing 'response' from scrapy request

我正在嘗試學習 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

Scrapy 是一個有點復雜的框架。 您不能只是按照您想要的方式在此處創建請求和響應。
Scrapy 分為幾個部分,比如下載器部分,它在調度器部分下載請求計划——簡而言之,你需要在代碼中啟動所有這些部分,才能簡單地獲得這樣的請求。

您可以在此處查看整個復雜架構的插圖和描述

在此處輸入圖像描述

你可以做的只是簡單地使用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

如果您只想打印所有內容:

print response.text

我同意 granito.. 指出的事情,說 Scrapy 可以總結仍然是一個艱難的賭注,即使只涵蓋框架本身......你只會在你完成教程時理解得更好,看起來最好你擁有的學習資源就是你的邏輯。 奉獻精神和谷歌。 通過你的代碼片段,我可以告訴你來自使用一些很棒的 bs4。 你可以在 scrapy spider 中使用...我可以看出你真的剛剛開始學習.. 就像最近一樣,沒有定義一類蜘蛛或命名它和伙計! 沒有錯!

至於你關於獲取內容的問題,它再次回顧了任何編寫的 scrapy 教程......數據挖掘/scrapy 是 99.9%,選擇什么日期如何?

在您的蜘蛛中使用您定義項目的頁面 CSS 元素>它,使用頁面響應或您的突變(您的新更改>版本關閉)您可以將其導出為產量或返回函數..打印是通常為日志 puposes 做更多,這個 elmente 可能是一個鏈接,只是文本...一個文件?

以與 css 相同的方式使用 xpath,但它們的結構不同

使用正則表達式幾乎可以肯定是必須的,但讓我們采取一些小步驟。

... 整個數據挖掘是為了提取您的內容,我覺得我好像在搶奪您自己的時間,所以請告訴您。 從官方的 scrapy 文檔中學習教程,稱為引述教程……如果您仍然有任何疑問該教程中發生了什么,我將分享我的課程(我得到報酬……但沒有你免費..)在這個inro步驟......但是伙計......它基本上對css知之甚少..如何使用網絡瀏覽器檢查工具,或者老派它並查看源代碼..我真的希望我能幫助,我的書呆子感覺很刺痛,但我可以帶你頓悟的時刻......打賭一些會......但你什么也沒得到,對嗎?

附言:

關於您獲取內容的第一個問題……例如,全部? 整個html? 正文,只是所有鏈接,或者只是包含 X 的鏈接。假設我們在談論一個簡單的博客頁面......有文章標題日期,里面有鏈接圖像。 我確定您知道,就在您說頁面內容時,您指的是頁面的整體。 您挖掘的數據的價值取決於您可以表達的格式,更重要的是將數據與其他數據進行對比來創建分析……如果您只想要整個 html 源等,則基於數據的結論大聲笑我們的朋友 Granito-Whachamacallhim.... response.body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM