我想在註冊每個線程有多少個回覆的同時提取此mailing list的每個標題。Scrapy無法識別Firebug列出的「tbody」和「ul」元素
根據螢火蟲,所述XPath來的<ul>
包含所有的標題是:
/HTML /體/表[2]/tbody的/ TR 1/TD [2] /表/ TBODY/TR/TD/UL
然而,如果我粘貼此直接在Scrapy殼牌,它會產生一個空列表:
scrapy shell http://seclists.org/fulldisclosure/2002/Jul/index.html
response.xpath('/html/body/table[2]/tbody/tr[1]/td[2]/table/tbody/tr/td/ul')
[]
一些試驗和錯誤之後(因爲我無法從文檔中找出列出給定Selector中的直接子元素的方法(請告訴他們是否知道其中的一個),我發現元素「tbody」在Xpath上不起作用。通過去除它們,我能夠達到導航到/td
:
almost_email_threads = response.xpath('/html/body/table[2]/tr[1]/td[2]/table/tr/td')
但是,如果我現在試圖達到「UL」它不會工作:
email_threads.xpath('/ul')
[]
現在,混淆了我最是運行:
response.xpath('/html/body/table[2]/tr[1]/td[2]/table/tr/td//ul')
將給我UL的,但不是在相同的順序出現在網站上。它以不同的順序跳過線程。此外,似乎不可能計算每個線程的回覆數量。
我在這裏錯過了什麼?自從我使用Scrapy以來已經有一段時間了,但我不記得這很難弄清楚,無論出於何種原因,教程都不會在Bing或Google上爲我提供。
謝謝。它似乎在這裏工作。我會等着看是否有人知道如何在Spacy上列出選擇器的答案,或者想要提出任何其他建議,如果沒有,我會在這裏接受你的答案。我也贊同你的回答。你知道爲什麼我的問題和答案都被低估了嗎?當他們不評論改善,而不是簡單的下調時,很難改善。 –
我已更新答案,向您展示如何獲得答覆的數量和選擇器的子代。關於你的問題的反對票,我只能推測;可能會認爲它不包含MCV示例並且至少有一個格式錯誤。看看http://stackoverflow.com/help/how-to-ask可能會有所幫助。但是我認爲,如果不給出解釋性評論,就會顯得不禮貌。 – Markus
謝謝。我接受了你的答案。 –