使用beatifulsoup从html页面中仅选择一个数字

2024-10-01 22:31:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个来自冠状病毒世界的url,我只想选择一个数字,亚利桑那州的新病例,现在是+2383

import requests
from bs4 import BeautifulSoup
import lxml
    
url = "https://www.worldmeter.com/coronavirus/us/"
page = requests.get("https://www.worldmeter.com/coronavirus/us/")
    
soup = BeautifulSoup(page.content, "lxml")
page.close()
    
newcases = soup.find('a', href_="https://worldmeter.com/coronavirus/arizona", class_="tableRowLinkYellow newCasesStates").get_text(strip=True)
    
print(newcases)

我得到这个错误: AttributeError:“非类型”对象没有属性“获取文本” 我怎么才能从整张桌子上只选那个数字呢?谢谢你抽出时间


Tags: httpsimportcomurlgetwwwpage数字
1条回答
网友
1楼 · 发布于 2024-10-01 22:31:39

正如林所说,它是由Javascript产生的。使用硒是一种简单的方法,但效率不够。(太慢)

您可以直接刮取API:

import requests

url = "https://worldmeter.com/coronavirus/wp-admin/admin-ajax.php?action=wp_ajax_ninja_tables_public_action&table_id=2582&target_action=get-all-data&default_sorting=old_first"

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
}

results = requests.get(url, headers=headers).json()

for result in results:
    if result["state_name"] == "Arizona":
        print(result)
        print("The newcases is", result["new_cases"])

这给了我:

{'state_name': 'Arizona', 'positive': '275,436', 'new_cases': '2,383', 'death_in_states': '6,302', 'new_deaths': '2', 'recovered_states': '45,400', 'new_recovered': '364', 'totaltestresults': 'Arizona', 'postname': 'arizona', 'cases_100_k_population': '3,866.37', 'state_population': '7278717', 'death_100_k_population': '88.46'}
The newcases is 2,383

相关问题 更多 >

    热门问题