如何使用Python从该站点中获取所有数据

如何使用Python从该站点中获取所有数据,python,python-3.x,web-scraping,beautifulsoup,Python,Python 3.x,Web Scraping,Beautifulsoup,我对网页抓取很陌生。我想从中搜集数据,主要是右边的数据,上面有国家的年份、国家和GDP 我的代码如下: from urllib.request import urlopen from bs4 import BeautifulSoup data = "http://databank.worldbank.org/data/reports.aspx?source=2&series=NY.GDP.MKTP.CD&country=#" page = urlopen(data) soup

我对网页抓取很陌生。我想从中搜集数据,主要是右边的数据,上面有国家的年份、国家和GDP

我的代码如下:

from urllib.request import urlopen
from bs4 import BeautifulSoup
data = "http://databank.worldbank.org/data/reports.aspx?source=2&series=NY.GDP.MKTP.CD&country=#"
page = urlopen(data)

soup = BeautifulSoup(page,'html.parser')
name_box = soup.find('div',attrs = {'class':'canvas'})
name = name_box.text.strip()

print(name)
我可以获得数据,但这只是前10+的数据

因此,我的问题是,当数据不在页面本身(即从其他地方导入数据)时,如何处理此类问题。
提前感谢您的任何输入。

通常,当javascript加载更多数据时,它会调用端点

当您调用
urlopen(data)
时,您正在调用端点。在较新版本的python中,使用
requests.get(data)
requests.post(data)
进行类似的调用。的文档具有广泛的示例和用途。如果查看javascript发出的请求,它有许多部分(头、参数、方法等)。您可以在urlopen中将这些部分添加到您的请求中,以便复制(模拟)javascript正在进行的调用

如果可以模拟该调用,则可以将后续调用中的数据加载到soup中。然后您可以解析数据

如果你不能模仿这个呼叫,那么你最好使用某种无头浏览器。最常用的两种是干刮和硒。我个人更喜欢


查看对您的问题的评论,我发现您已经在使用selenium了。与滚动类似,当滚动完成时,它通常会进行我前面提到的后续调用。如果您可以完整地模拟它们(头、参数、Qwarg等),那么您可以让浏览器加载数据。

通常,当javascript加载更多数据时,它会调用端点

当您调用
urlopen(data)
时,您正在调用端点。在较新版本的python中,使用
requests.get(data)
requests.post(data)
进行类似的调用。的文档具有广泛的示例和用途。如果查看javascript发出的请求,它有许多部分(头、参数、方法等)。您可以在urlopen中将这些部分添加到您的请求中,以便复制(模拟)javascript正在进行的调用

如果可以模拟该调用,则可以将后续调用中的数据加载到soup中。然后您可以解析数据

如果你不能模仿这个呼叫,那么你最好使用某种无头浏览器。最常用的两种是干刮和硒。我个人更喜欢


查看对您的问题的评论,我发现您已经在使用selenium了。与滚动类似,当滚动完成时,它通常会进行我前面提到的后续调用。如果您可以完整地模拟它们(标题、参数、QWARG等),那么您可以让浏览器加载数据。

当我访问链接时,有一个完整的菜单专用于“下载选项”。为什么不直接使用它呢?

当我访问链接时,有一个完整的菜单专用于“下载选项”为什么不直接使用它?

搜索javascript呈现,使用chrome developer工具检查请求,或者使用selenium(1)您试图打开的URL中有一个空白。(2) 您试图接收哪些数据?感谢您指出,这是网站:否则您可以单击问题中的“此处”。使用Selenium:将该表滚动到底部几次,然后将生成的html提取到bs4Scrolling。滚动没有帮助,在10+个请求被输出后,它仍然会输出“加载”。搜索javascript呈现,使用chrome developer工具检查请求,或者使用selenium(1)您尝试打开的URL中有一个空白。(2) 您试图接收哪些数据?感谢您指出,这是网站:否则您可以单击问题中的“此处”。使用Selenium:将该表滚动到底部几次,然后将生成的html提取到bs4Scrolling。滚动没有帮助,在10+个任务完成后,它仍然打印“加载”。我希望我可以,但这是我的任务。我希望我可以,但这是我的任务。