我遇到了一個問題,在使用 XPath 選擇器時我無法獲取所有資訊。該行處于開發人員模式。這是
<address class="location-row-address" data-qa-target="provider-office-address">
230 W 13th St Ste 1b<!--
--> <!--
-->New York<!--
-->, <!--
-->NY<!--
--> <!--
-->10011<!--
-->
</address>
我使用的 XPath 選擇器是
response.xpath('//*[@id="summary-section"]/div[1]/div[2]/div/div/div[2]/div[1]/address/text()').get()
我得到的結果是
230 W 13th St Ste 1b
我期待的結果是
230 W 13th St Ste 1b New York, NY 10011
我正在使用scrapy進行刮擦。謝謝你。感謝您的幫助。
編輯:我面臨的上述問題已解決。我使用 string() 方法和 get() 從元素節點獲取所有字串。
response.xpath('string(//*[@id="summary-section"]/div[1]/div[2]/div/div/div[2]/div[1]/address)').get()
uj5u.com熱心網友回復:
您的 XPath 運算式回傳作為元素子級的所有文本節點address。有幾個文本節點,注釋節點將它們分開!
回到 Python 領域,您正在呼叫get()只回傳節點集的第一個節點的結果的方法。
.get() 總是回傳一個結果;如果有多個匹配,則回傳第一個匹配的內容;如果沒有匹配項,則回傳 None。.getall() 回傳一個包含所有結果的串列。 https://docs.scrapy.org/en/latest/topics/selectors.html
如果您呼叫該getall()方法,您將檢索字串串列,并且可以將它們連接起來以生成您想要的文本。但更簡單的方法是使用 XPath 函式來獲取元素string的“字串值” 。address在 XPath 1.0 規范中,它以這種方式定義元素節點的字串值:
元素節點的字串值是該元素節點的所有文本節點后代的字串值按檔案順序串聯而成。
https://www.w3.org/TR/1999/REC-xpath-19991116/#element-nodes
將此函式應用于address元素將回傳一個字串值,然后您可以使用get()Scrapy 中的方法訪問該值:
response.xpath(
'string(//*[@id="summary-section"]/div[1]/div[2]/div/div/div[2]/div[1]/address)'
).get()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/496232.html
