美丽的汤查找功能刮谷歌数字

2024-10-17 06:23:56 发布

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

我刚看完一本关于靓汤的教程,我想用它从谷歌上获取一些数据

我刚刚googled coronavirus UK想搜集一下目前的确诊病例数

网页右上方是一个方框,显示英国确诊病例的数量。检查该元件后,我发现它位于该块中:

<td jsname="VBiLTe" class="dZdtsb QmWbpe ZDeom" data-absolute-value="276332" data-is-data-cell="true" 
data-per-million-value="4258.258906030955" data-vfs="276332"><div class="amyZLb">Confirmed</div><div 
class="m7B03"><div jsname="fUyIqc"><span>276K</span></div><div jsname="KBqmYc" style="display:none">
<span>4,258</span></div></div><div class="h5Hgwe"><div jsname="fUyIqc">+<span>1,570</span></div></div>
</td>

上面代码块中的data vfs键保存了我想要刮取的值。我以为这段代码可以帮你刮取这个值

from bs4 import BeautifulSoup
import requests

source = requests.get("https://www.google.com/search?q=coronavrius+uk&rlz=1C1CHBF_en-GBGB813GB813&oq=cor&aqs=chrome.0.69i59l2j0j69i57j35i39j69i64j69i60l2.1384j0j4&sourceid=chrome&ie=UTF-8").text
soup = BeautifulSoup(source,'lxml')

test=soup.find("td",class_="dZdtsb QmWbpe ZDeom")
print(test["data-vfs"])

但是,test返回为none(在运行代码时会出现错误),这意味着什么也找不到?我一直想弄明白为什么这么久了,但什么也没想到。如何修改find中的参数以获取数字


Tags: 代码testdivdatavalueclasstdspan
2条回答

“jsname”可能表示在加载主页之后,javascript会动态加载该网页块。当您使用BeautifulSoup时,它将下载源代码,但在解析之前不会在页面上执行任何javascript

您可能想看看“Selenium”,它是一种无头浏览器,或者学习使用更简单的源代码的静态页面的BeautifulSoup。例如,谷歌从某个地方获取数据,找到源代码并刮取该页面

祝你好运

要从Google提供的页面获取信息,您需要指定User-Agent

例如:

import requests
from bs4 import BeautifulSoup


url ='https://www.google.com/search?hl=en&q=corona+virus+uk'
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0'}

soup = BeautifulSoup( requests.get(url, headers=headers).content, 'html.parser' )

table1 = soup.select_one('div:has(span:contains("United Kingdom")) + table')
table2 = soup.select_one('div:has(span:contains("Worldwide")) + table')

print('UK:')
print('-'*80)
for td in table1.select('td'):
    print(td.get_text(strip=True, separator=' '))

print()

print('World:')
print('-'*80)
for td in table2.select('td'):
    print(td.get_text(strip=True, separator=' '))

印刷品:

UK:
                                        
Confirmed 276K 4,258 + 1,570
Recovered -
Deaths 39,045 602 + 0

World:
                                        
Confirmed 6.06M 860 + 123K
Recovered -
Deaths 371K 53 + 4,000

编辑:从2020年7月6日起运行代码打印:

UK:
                                        
Confirmed 285K 4,398 + 624
Recovered -
Deaths 44,220 681 + 67

World:
                                        
Confirmed 11.4M 1,621 + 203K
Recovered 6.16M 874
Deaths 534K 76 + 5,193

相关问题 更多 >