python - beautifulSoup4 .select(’.bnrName’) 取不到到 text 文字
問(wèn)題描述
背景: Python3 下使用 bs4 的 select 去獲取 ZOZO首頁(yè)上方的 coupon 信息中店鋪名字。 (國(guó)內(nèi)ip貌似看不到優(yōu)惠券信息,需要翻一下才能看到,最好是島國(guó)ip)
問(wèn)題: 發(fā)現(xiàn)自己找不到他的店鋪名字在寫(xiě)在什么地方,不知道怎么取,前端 js 不懂,請(qǐng)教諸位解答。謝謝。
自己的代碼如下:
import requests, bs4shopName = ’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()
如下截圖中是想要獲取的文字,
發(fā)現(xiàn)查看源碼中卻沒(méi)有文字。
<p class='couponInfo'> <p class='bnrName'>說(shuō)好的文字呢。。。</p> <p class='bnrText'></p></p>
請(qǐng)教他的文字是在哪實(shí)現(xiàn)的啊,要怎么用bs4 select才出來(lái),謝謝。
問(wèn)題解答
回答1:有可能用ajax從服務(wù)器獲取之后操作dom動(dòng)態(tài)添加的吧,在瀏覽器里執(zhí)行了js就文字也被添加進(jìn)來(lái)。而你用爬蟲(chóng)爬的時(shí)候沒(méi)有執(zhí)行有關(guān)js所以也沒(méi)有添加文字。
要是真的這樣的話,你可以在瀏覽器的f12那里查看network,把獲取文字的那個(gè)http請(qǐng)求的url找出來(lái),直接請(qǐng)求這個(gè)url獲取你需要的信息。
回答2:我在瀏覽器中打開(kāi)http://zozo.jp/查看源代碼并沒(méi)有找到你所要找的bnrName
你在瀏覽器上右鍵“查看網(wǎng)頁(yè)源碼”看看能不能找得你那段文字,如果找不到,那網(wǎng)頁(yè)應(yīng)該是用js或者ajax動(dòng)態(tài)加載的,想要爬取這種動(dòng)態(tài)頁(yè)面,兩種方法,要么是自己手動(dòng)模擬請(qǐng)求,要么就用selenium去抓吧
回答4:確實(shí)是js生成的,已經(jīng)采用headless瀏覽器模擬抓取了,謝謝大家!
相關(guān)文章:
1. boot2docker無(wú)法啟動(dòng)2. java - SSH框架中寫(xiě)分頁(yè)時(shí)service層中不能注入分頁(yè)類(lèi)3. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””4. docker-compose中volumes的問(wèn)題5. nignx - docker內(nèi)nginx 80端口被占用6. docker網(wǎng)絡(luò)端口映射,沒(méi)有方便點(diǎn)的操作方法么?7. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.8. javascript - vue生成一維碼?求助!!!!!急9. javascript - mock.js可以存儲(chǔ)數(shù)據(jù)嗎10. java - Spring事務(wù)回滾問(wèn)題

網(wǎng)公網(wǎng)安備