亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Scrapy:如何使用 CSS 和 XPath 獲取地址?

Scrapy:如何使用 CSS 和 XPath 獲取地址?

蠱毒傳說 2022-07-12 17:58:47
如何使用 CSS 和 XPath 獲取地址?我嘗試使用 CSS:response.css('.office-address::text').extract()<span class="office-address" itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">                <span itemprop="streetAddress">                    <span class="address-line1">5835 Post Rd.</span>                        <span class="address-line2">Suite 217</span>                </span>                <span class="city-state-zip">                    <span itemprop="addressLocality">East Greenwich</span>, <span itemprop="addressRegion">RI</span> <span itemprop="postalCode">02818</span>                </span>            </span>
查看完整描述

4 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

帶有scrapy的CSS選擇器選項:


address = response.css("span.address-line1::text, span.address-line2::text, span[itemprop=addressLocality]::text, span[itemprop=addressRegion]::text, span[itemprop=postalCode]::text").extract() # should return list

if address:

    address = ", ".


查看完整回答
反對 回復 2022-07-12
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

使用單行 XPath 的骯臟解決方案:

concat(//span[@class='address-line1']/text(),' ',//span[@class='address-line2']/text(),' ',//span[@itemprop='addressLocality']/text(),', ',//span[@itemprop='addressRegion']/text(),//span[@itemprop='postalCode']/text())

輸出 :

"5835 Post Rd. Suite 217 East Greenwich, RI02818"


查看完整回答
反對 回復 2022-07-12
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

試試這個response.css('.office-address ::text').extract()之前添加的空間::text



查看完整回答
反對 回復 2022-07-12
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

這是面向未來的想法,因為 ids/classes 可以在此期間發生變化:


from re import sub

from bs4 import BeautifulSoup as bs


teststr = """<span class="office-address" itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">

                <span itemprop="streetAddress">

                    <span class="address-line1">5835 Post Rd.</span>


                        <span class="address-line2">Suite 217</span>

                </span>

                <span class="city-state-zip">

                    <span itemprop="addressLocality">East Greenwich</span>, <span itemprop="addressRegion">RI</span> <span itemprop="postalCode">02818</span>

                </span>

            </span>"""


r = bs(teststr,"lxml").getText().strip()

r = sub( r"\n", ", ", r)

r = sub( r"[, ]{2,}", ", ", r)

print ( r ) 

結果:


5835 Post Rd., Suite 217, East Greenwich, RI 02818


查看完整回答
反對 回復 2022-07-12
  • 4 回答
  • 0 關注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號