【发布时间】:2020-03-30 08:40:18
【问题描述】:
我尝试从https://google.com/covid19-map/?hl=en 网站上抓取表格行以获取有关冠状病毒传播的数据。但它只返回几行,在我的情况下为 15。我无法抓取所有行。表格在网站上并不完全可见,需要滚动才能看到表格的内容。请帮忙。
import requests
from bs4 import BeautifulSoup
URL = "https://google.com/covid19-map/?hl=en"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
all_rows = soup.findAll('tr', attrs = {'class':'A5V3jc'})
for i in range(len(all_rows)):
# Getting image link
img_link = all_rows[i].find('img')
if img_link != None:
print(img_link['src'])
# Getting name field
name = all_rows[i].find('span')
if(name != None):
print(name.text, end ="\t")
# getting remaining data
remaining_entries = all_rows[i].findAll('td', attrs = {'class':'uMsnNd HAChlc'})
for j in remaining_entries:
if(j != None):
print(j.text, end="\t\t\t")
print("\n\n")
【问题讨论】:
-
尝试在禁用 java 脚本的情况下在浏览器中加载您的页面,您会看到它只在表中列出了少数到奥地利,然后该站点使用 javascript 事件去检索其余的数据并填充表格更多。 BS 不会触发 JS 事件,因此您只会看到与在禁用 java 脚本的情况下在浏览器中加载页面时相同的数据
标签: python-3.x web-scraping beautifulsoup