【问题标题】:Problems scraping a dynamic website with Beautiful Soup使用 Beautiful Soup 抓取动态网站的问题
【发布时间】:2021-12-29 18:04:32
【问题描述】:

我想从网站上抓取犯罪新闻文章,但汤对象没有返回所需的div 标签,谁能给我原因?

import requests
from bs4 import BeautifulSoup 

page = requests.get("https://www.nst.com.my/news/crime-courts?page=1") 
soup = BeautifulSoup(page.text, 'html.parser')
print(soup)

【问题讨论】:

  • 内容是动态提供的 - 所以看看 api 或 selenium 。
  • 哦,每当您在加载后发现数据出现时,很可能是使用 Javascript 插入的。因此,此动态数据不是您请求的 HTML 文件的一部分。要么查找它正在调用的 API,要么查找如何解析动态网页。

标签: python web-scraping beautifulsoup python-requests


【解决方案1】:

这个问题的答案太宽泛了,无法在此涵盖。你需要学习使用Selenium web driver,或者任何其他可以让你先获取源HTML的方法,然后你可以用Beautiful soup来解析它。

例如:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
url = "https://www.nst.com.my/news/crime-courts?page=1"
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
driver.quit()
print(soup.prettify())

查看https://stackoverflow.com/a/47730866/2154717 或搜索 搜索“Scrape dynamic web sites with Selenium and Python”。

【讨论】:

  • 谢谢大家,我用json文件得到了我需要的数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多