Sup Cantik - Memilih Kelas Memiliki Hasil Tak Terduga

Saya baru mengenal pemrograman dan telah mempelajari Python melalui web scraping. Apa yang saya coba lakukan adalah menangkap baris di bawah ini dari situs yang tercantum di URL saya:

<a class="" href="https://www.adweek.com?paged=776%3Fs%3Dinterpublic&amp;orderby=date&amp;s=interpublic">776</a>, tapi sepertinya saya tidak bisa sampai ke sana. Itu hanya mengembalikan baris pertama informasi penomoran halaman dan saya tidak tahu alasannya. Bantuan apa pun akan sangat dihargai

import requests
from bs4 import BeautifulSoup
url = 'https://www.adweek.com/?s=interpublic&orderby=date'
req = requests.get(url)
soup = BeautifulSoup(req.content, 'html.parser')
k =soup.find_all('div', {'class':'pagination-centered'})

Hanya pengembalian --

[<div class="pagination-centered"><ul class="pagination">
 <li><span aria-current="page" class="current">1</span></li></ul></div>]

Terima kasih, Seth


person Seth Moskowitz    schedule 24.07.2020    source sumber
comment
silakan posting keluaran yang Anda inginkan?   -  person Umair Mubeen    schedule 24.07.2020
comment
Apakah Anda menunggu halaman dimuat sepenuhnya sebelum melakukan kueri? Div itu mungkin akan diisi dengan javascript nanti   -  person shrewmouse    schedule 24.07.2020
comment
Terima kasih atas tanggapannya. Saya ingin mendapatkan nomor 776 yang terletak di bit pertama kode, tetapi semuanya harus dibungkus di bagian penomoran halaman. Namun, sepertinya saya tidak mendapatkan apa pun selain bagian pertama di area penomoran halaman kecuali bagian Berikutnya. Pada akhirnya saya ingin nomor 776.   -  person Seth Moskowitz    schedule 24.07.2020
comment
Saya dapat melihatnya di variabel, tetapi sepertinya tidak dapat mengaksesnya.   -  person Seth Moskowitz    schedule 24.07.2020
comment
Dimana kamu melihatnya? Dalam keluaran sup atau dengan memeriksa kode HTML di browser?   -  person shrewmouse    schedule 24.07.2020
comment
Saya melihatnya di objek sup saya.   -  person Seth Moskowitz    schedule 24.07.2020


Jawaban (1)


Anda bisa mendapatkan penomoran halaman menggunakan pemilih a[href*="paged="] css:

import requests
from bs4 import BeautifulSoup

url = 'https://www.adweek.com/?s=interpublic&orderby=date'
req = requests.get(url)
soup = BeautifulSoup(req.content, 'html.parser')

# print text and href
pagination = soup.select('a[href*="paged="]')
for p in pagination:
    print(p.text.strip(), p.get('href'))

Berikutnya memiliki url yang sama dengan tautan pertama, Anda dapat menggunakan set untuk mendapatkan href unik saja. :

pagination = {p['href'] for p in soup.select('a[href*="paged="]')}

Anda bisa mendapatkan nomor halaman terakhir dan mengulanginya dengan mengubah parameter paged di url hingga halaman terakhir.

Sumber halaman tanpa JavaScript: masukkan deskripsi gambar di sini

person Sers    schedule 24.07.2020
comment
Terima kasih! Meskipun saya tidak mengerti apa yang Anda lakukan, hal itu pasti berhasil. - person Seth Moskowitz; 24.07.2020