首页 > 解决方案 > 为什么我在网页抓取时得到一个空列表而不是包含元素的列表

问题描述

因此,我试图从网站https://www.theguardian.com/world/2020/oct/25/covid-world-map-countries-most-coronavirus-cases-deaths的表格中抓取国家名称作为列表。但是当我打印出来时,它只是给了我一个空列表,而不是一个包含国家名称的列表。谁能解释我为什么会得到这个?代码如下,

import requests
from bs4 import BeautifulSoup

webpage = requests.get("https://www.theguardian.com/world/2020/oct/25/covid-world-map-countries-most-coronavirus-cases-deaths")
soup = BeautifulSoup(webpage.content, "html.parser")

countries = soup.find_all("div", attrs={"class": 'gv-cell gv-country-name'})
print(countries)
list_of_countries = []
for country in countries:
    list_of_countries.append(country.get_text())

print(list_of_countries)

这是我得到的输出

[]
[]

此外,不仅在这里,当我试图从亚马逊网站上抓取产品信息时,我得到了相同的结果(空列表)。

标签: web-scrapingbeautifulsouppython-requestsdata-extraction

解决方案


该列表是从另一个端点动态检索的,您可以在返回 json 的网络选项卡中找到。像下面这样的东西应该可以工作:

import requests

r = requests.get('https://interactive.guim.co.uk/2020/coronavirus-central-data/latest.json').json() #may need to add headers

countries = [i['attributes']['Country_Region'] for i in r['features']]

推荐阅读