【问题标题】:Scrape next page content beautifulsoup刮下一页内容beautifulsoup
【发布时间】:2026-02-13 14:00:01
【问题描述】:

所以我正在尝试抓取this 新闻网站。我可以从那里的每个主题中抓取新闻文章。但有时文章页面包含超过 1 页,例如 this。下一页具有与第一页相同的 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”表示页面。

如果您愿意提供帮助,我们将不胜感激。

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    您的处理方法是首先编写一个单独的函数来从文章页面中提取信息,然后通过检查此类“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)
    

    希望能回答你的问题

    【讨论】: