【发布时间】:2019-12-12 20:46:50
【问题描述】:
我正在尝试从CNN 获取个人项目的 html。我正在使用 requests 库并且是新手。我已经按照基本教程使用请求从 CNN 获取 HTML,但是在我从浏览器中检查网页时,得到的响应与我发现的 HTML 不同。这是我的代码:
base_url = 'https://www.cnn.com/'
r = requests.get(base_url)
soup = BeautifulSoup(r.text, "html.parser")
print(soup.prettify())
我正在尝试从 CNN 获取文章标题,但这是我的第一个问题。感谢您的帮助!
更新 看来我知道的比我最初假设的还要少。我真正的问题是:如何从 CNN 主页中提取标题?我已经尝试了这两个答案,但请求中的 HTML 不包含标题信息。我怎样才能得到这个图片中的标题信息(我的浏览器截图)Screenshot of cnn article title with accompanying html side by side
【问题讨论】:
-
每次响应都不一样吗?网页可能会动态变化。
-
您的浏览器呈现 HTML 并执行例如Javascript。因此,您从请求中得到的结果是不同的。
-
正如我在底部所指出的,我正在尝试从主页获取文章标题。我可以在 Web 浏览器上看到 HTML 中的标题。但是,请求响应不包含标题。
-
@Gabe 这完全正常,正如其他人已经说过的,这是由于浏览器渲染/JavaScript 造成的。您在浏览器中看到的 HTML 并没有反驳这一点。重要的是您打印的 HTML。说起来,你总是可以分享的。此外,当您的请求包含要传递给解析器的 HTML 时,请使用
.content,而不是.text。 -
网页内容通过
json加载。所以你必须从 json 请求中抓取这些数据
标签: python web-scraping beautifulsoup python-requests