Latar Belakang:
Gunakan pilihan bs4 di bawah Python3 untuk mendapatkan nama kedai dalam maklumat kupon di bahagian atas halaman utama ZOZO. (IP Domestik nampaknya tidak dapat melihat maklumat kupon. Anda perlu menatalnya untuk melihatnya. Sebaik-baiknya gunakan IP negara pulau)
Soalan:
Saya mendapati bahawa saya tidak dapat mencari di mana nama kedainya ditulis. Saya tidak tahu bagaimana untuk mendapatkannya. terima kasih.
Kod saya adalah seperti berikut:
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()
Tangkapan skrin di bawah ialah teks yang anda ingin dapatkan,
Saya mendapati tiada teks dalam kod sumber.
<p class="couponInfo">
<p class="bnrName">说好的文字呢。。。</p>
<p class="bnrText"></p>
</p>
Sila beritahu saya di mana teksnya dilaksanakan dan cara menggunakan bs4 pilih untuk memaparkannya.
Ada kemungkinan untuk menggunakan ajax untuk mendapatkannya daripada pelayan dan kemudian mengendalikan dom untuk menambahkannya secara dinamik Apabila js dilaksanakan dalam penyemak imbas, teks juga akan ditambah. Apabila anda merangkak dengan perangkak, anda tidak melaksanakan js yang berkaitan, jadi anda tidak menambah teks.
Jika ini benar-benar berlaku, anda boleh menyemak rangkaian dalam f12 penyemak imbas, mengetahui URL permintaan http untuk mendapatkan teks, dan terus meminta URL ini untuk mendapatkan maklumat yang anda perlukan.
Saya membuka http://zozo.jp/ dalam penyemak imbas untuk melihat kod sumber dan tidak menemui bnrName yang anda cari
Klik kanan pada penyemak imbas dan "lihat kod sumber halaman web" untuk melihat sama ada anda boleh menjumpai teks anda Jika anda tidak menemuinya, halaman web harus dimuatkan secara dinamik menggunakan js atau ajax jenis halaman dinamik, anda perlu Tiada cara lain, sama ada mensimulasikan permintaan sendiri secara manual, atau menggunakan selenium untuk menangkapnya
sememangnya dijana oleh js, dan telah disimulasikan dan ditangkap menggunakan penyemak imbas tanpa kepala. Terima kasih semua!