我想使用scrapy刮刮有一個搜索表單的網站,但它很難做併發請求給出它如何工作: 當您執行搜索時,它創建一個環繞搜索的會話,並且您不能同時進行多次搜索,否則無法再訪問先前搜索的結果。如何刮scrapy中的搜索表格
例如:
啓動帶條件的搜索,它重定向到一個網頁,一個ID和每個結果的細節重用此ID:
list.do?anchor=51edc79.0
details.do?anchor=51edc79.0.0
details.do?anchor=51edc79.0.1
如果我開始一個新的搜索標準B,這是一個新的ID:
list.do?anchor=5200109.0
details.do?anchor=5200109.0.0
details.do?anchor=5200109.0.1
但現在第一搜索的結果也不會顯示內容:
details.do?anchor=51edc79.0.2 => cannot find
details.do?anchor=51edc79.0.3 => cannot find
我一次只能做一個請求,以確保第二次搜索不會開始,直到獲取第一次搜索的所有結果,但我仍然想要併發請求以獲得一個結果搜索更快。 所以這個想法將不會開始第二次搜索,直到搜索到所有搜索結果。
你會怎麼做scrapy?
當我允許多個請求(CONCURRENT_REQUESTS
)和使用的優先級,第二個搜索開始都是從第一個搜索頁面中之前完成。
感謝
感謝您的回覆。我嘗試過,但是我在搜索中看到的ID實際上並不是真正的會話,所以當我使用cookiejar中的新條件開始新搜索時,它會出錯(服務器以500響應,因爲我認爲沒有創建會話服務器)。看起來真正的會話是在訪問主頁時用起始url創建的。所以我必須在主頁上使用cookiejar('Home - > Search - > Result')。這使得它變得複雜起來,因爲我使用主頁作爲獲取標準值的起點,然後纔開始對每個標準進行搜索。 : -/ – Ted
然後你必須控制自爬網開始以來的cookiejars,檢查我更新的答案 – eLRuLL
嗯,也許我錯過了一些東西,但從我的理解,在每個會話中,我仍然有原始問題:在一個會話中,在取得所有結果之前,我不能移動到下一個搜索。我會看看我是否可以用不同的方式使用cookiejar。不管怎麼說,還是要謝謝你。 – Ted