簡體   English   中英

抓取下一頁內容beautifulsoup

[英]Scrape next page content beautifulsoup

所以我試圖抓取這個新聞網站。 我可以從那里的每個主題中抓取新聞文章。 但有時文章頁面包含超過 1 個頁面,就像這樣 下一頁具有與第一頁相同的 HTML 結構。 如果有不止一頁,有沒有辦法自動抓取下一頁上的其余文章?

這是我的代碼:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

detik = requests.get('https://www.detik.com/terpopuler')
beautify = BeautifulSoup(detik.content, 'html5lib')

news = beautify.find_all('article', {'class','list-content__item'})
arti = []
for each in news:
  try:
    title = each.find('h3', {'class','media__title'}).text
    lnk = each.a.get('href')

    r = requests.get(lnk)
    soup = BeautifulSoup(r.text, 'html5lib')
    content = soup.find('div', {'class', 'detail__body-text itp_bodycontent'}).text.strip()

    print(title)
    print(lnk)

    arti.append({
      'Headline': title,
      'Content':content,
      'Link': lnk
    })
  except:
    continue
df = pd.DataFrame(arti)
df.to_csv('detik.csv', index=False)

這是下一頁按鈕圖像。 “Selanjutnya”表示下一個,“Halaman”表示頁面。

在此處輸入圖片說明

如果您願意提供幫助,真的很感激。

您解決此問題的方法是首先編寫一個單獨的函數來從文章頁面中提取信息,然后通過檢查此類“detail__anchor-numb”來檢查文章頁面上是否有任何分頁,然后您將遍歷頁面並提取數據來自文章:

pages= soup.select('.detail__anchor-numb')
if len(pages):
    page_links= [i.attrs.get('href') for i in soup.select('.detail__anchor-numb')]
    for page in range(1, len(page_links)+1):
        #scrape_article function will handle requesting a url and getting data from article
        next_article_url = page_links[page ]
        scrape_article(next_article_url)

我希望能回答你的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM