首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么BeautifulSoup无法从页面源代码中抓取完整的脚本?

问为什么BeautifulSoup无法从页面源代码中抓取完整的脚本?
EN

Stack Overflow用户
提问于 2020-07-23 19:17:52
回答 1查看 86关注 0票数 0

如果以前有人问过这个问题,我很抱歉。我对每件事都很陌生。

我正在尝试解析来自以下网站的页面。然而,抓取的结果脚本与我在Chrome上查看页面源代码时观察到的脚本并不相同。

代码语言:javascript
复制
import pandas as pd
from bs4 import BeautifulSoup as bsoup
import requests as rq

url_estates = "https://www.propertyguru.com.sg/singapore-property-listing/hdb"
headers = {"user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"}
client = rq.get(url_estates, headers = headers)
client
<Response [200]>

soup = bsoup(client.content, features = "html.parser")
print(soup.prettify())

生成的脚本也要短得多,其中一半只由meta标签组成。

你知道为什么我不能根据页面来源刮掉完整的脚本吗?我读过一些帖子,其中提到,由于页面由使用javascript的动态列表组成,因此建议使用selenium。如果是这样的话,我还想了解为什么BeautifulSoup不能执行与selenium相同的功能。有没有办法在不求助于其他库的情况下抓取我想要的东西?

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

发布于 2020-07-23 19:24:56

Beautiful读取在不触发额外Javascript事件的情况下生成的HTML。Selenium是一个可用于模拟用户行为的webdriver。它们是两个不同的工具,在抓取包含动态内容的网页时可以一起使用。有关如何将各种工具捆绑在一起的解释,请参阅此blog post以帮助理解围绕抓取javascript大量站点和this SO post的问题。

也可能是你正在访问一个不允许抓取的网站,而请求返回了一条消息,说明了同样多的内容。看不到输出就很难判断。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63052975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档