搜尋

首頁  >  問答  >  主體

python - beautifulSoup4 .select('.bnrName') 取不到到 text 文字

背景:
Python3 下使用 bs4 的 select 去取得 ZOZO首頁上方的 coupon 資訊中店舖名字。 (國內ip似乎看不到優惠券訊息,需要翻一下才能看到,最好是島國ip)

問題:
發現自己找不到他的店舖名字在寫在什麼地方,不知道怎麼取,前端 js 不懂,請教諸位解答。謝謝。

自己的程式碼如下:

import requests, bs4

shopName = 'BEAUTY&YOUTH'
url = 'http://zozo.jp/'

def getZozoCoupon():
    res = requests.get(url, headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"})
    res.raise_for_status()
    soup = bs4.BeautifulSoup(res.text, 'html.parser')
    elems = soup.select('.bnrName')
    return elems[0].text.strip()

如下截圖中是想要取得的文字,

發現查看原始碼中卻沒有文字。

<p class="couponInfo">
    <p class="bnrName">说好的文字呢。。。</p>
    <p class="bnrText"></p>
</p>

請教他的文字是在哪裡實現的啊,要怎麼用bs4 select才出來,謝謝。

伊谢尔伦伊谢尔伦2778 天前797

全部回覆(4)我來回復

  • 大家讲道理

    大家讲道理2017-05-18 10:47:48

    有可能用ajax從伺服器取得之後操作dom動態加入的吧,在瀏覽器裡執行了js就文字也被加入進來。而你用爬蟲爬的時候沒有執行有關js所以也沒有加文字。

    要是真的這樣的話,你可以在瀏覽器的f12那裡查看network,把獲取文字的那個http請求的url找出來,直接請求這個url獲取你需要的資訊。

    回覆
    0
  • 習慣沉默

    習慣沉默2017-05-18 10:47:48

    我在瀏覽器中打開http://zozo.jp/查看原始碼並沒有找到你要找的bnrName

    回覆
    0
  • 高洛峰

    高洛峰2017-05-18 10:47:48

    你在瀏覽器上右鍵「查看網頁原始碼」看看能不能找得你那段文字,如果找不到,那網頁應該是用js或者ajax動態加載的,想要爬取這種動態頁面,兩種方法,要嘛是自己手動模擬請求,要嘛就用selenium去抓吧

    回覆
    0
  • 高洛峰

    高洛峰2017-05-18 10:47:48

    確實是js生成的,已經採用headless瀏覽器模擬抓取了,謝謝大家!

    回覆
    0
  • 取消回覆