python
  • regex
  • beautifulsoup
  • 2016-06-10 43 views 0 likes 
    0

    預期字符串或緩衝區我想從一些HTML刪除一些標籤:類型錯誤:與BeautifulSoup

    <p class="mt-20" itemprop="description"></p>。其他一切,如<br>應該保留。

    代碼:

    from bs4 import BeautifulSoup 
    import requests 
    import re 
    url = 'https://www.tokopedia.com/tokoonline22/sendok-ukur-elektrik-500g-maks-white?' 
    page3 = requests.get(url) 
    soup3 = BeautifulSoup(page3.text, "lxml") 
    
    #No problem. 
    #v = """<p class="mt-20" itemprop="description">*OMCB07BK*<br/><br/>Tas backpack ini didesign khusus untuk menaruh drone DJI Phantom 3 beserta dengan aksesoris-aksesorisnya seperti propeller, baterai dan remot kontrol. Setiap slot tas didesign untuk menaruh semua part dari drone DJI sehingga drone mudah dirakit saat ingin digunakan.<br/><br/>Features<br/><br/>Shoulder Bag<br/>Tas ini mirip seperti tas ransel hanya berbeda pada komparmen penyimpanan dimana setiap komparmen didesign untuk menaruh part-part dari DJI Phantom 3.<br/><br/>Easy to Access<br/>Anda dapat merekit dan menggunakan drone dengan sangat cepat dan mudah berkat designnya yang terbuka.<br/><br/>Designed for DJI Phantom 3<br/>Didesign khusus untuk menaruh drone DJI Phantom 3 selain drone juga dapat menaruh aksesoris-aksesoris nya.<br/><br/>Specifications<br/>Dimension 37 x 26 x 7 cm</p></p> 
    #""" 
    
    v = soup3.find("p", {"itemprop": "description"}) 
    result = re.sub('<p class="mt-20" itemprop="description">', "", v) 
    print(result) 
    

    輸出錯誤:

    result = re.sub('<p class="mt-20" itemprop="description">', "", v) 
    File "/usr/lib/python2.7/re.py", line 151, in sub 
    return _compile(pattern, flags).sub(repl, string, count) 
    TypeError: expected string or buffer 
    

    回答

    2

    re.sub需要string變量,你v變量是bs4 element tag。 您可以將BS4元素更改爲字符串:

    newv = str(v) 
    result = re.sub('<p class="mt-20" itemprop="description">', "", newv) 
    
    +0

    感謝兄弟..我已經成功@ user3636636 – Khorud

    1

    在另一方面,你實際上並不需要的正則表達式。您可以unwrap(這是我認爲你正在努力實現的元素)與BeautifulSoup本身:

    for elm in soup3.find_all("p", {"itemprop": "description"}): 
        elm.unwrap() 
    
    +0

    還要感謝你的答案,, .. – Khorud

    相關問題