【问题标题】:Unable to scrape all rows of a table using beautifulsoup无法使用 beautifulsoup 刮取表格的所有行
【发布时间】: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


【解决方案1】:
import pandas as pd
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.add_argument('--headless')
driver = webdriver.Firefox(options=options)

driver = webdriver.Firefox(options=options)
driver.get("https://google.com/covid19-map/?hl=en")
df = pd.read_html(driver.page_source)[1]

df.to_csv("Data.csv", index=False)

driver.quit()

输出:view online

【讨论】:

  • 感谢您的回答。您能否帮我获取 标签的 src 属性中存在的标志图像的链接?
  • @TanishqVyas 根据您提出的问题,您已经收到了答案。如果您还有其他问题,则必须提出新问题。
  • 下面的方法已经不行了。即使这会返回表的一些但不是所有行。我请求您更新您的答案。这真的很有帮助。
  • 好吧,我之前花了一些时间为你写了这段代码,它按预期工作!现在您刚刚不接受答案并要求更新代码!你真的认为这是合乎逻辑的吗?您可以打开一个单独的问题并说明该站点已更新并且代码无效,但只需不接受在您收到时有效的解决方案!这真是令人困惑
  • @TanishqVyas 用户可以在他们自己的空闲时间免费回答问题 - 当事情发生变化时,他们不需要或有义务保持最新的答案 - 这尤其适用于网络抓取所有时间。看来这个答案之前确实有效,所以如果现在没有 - 这不是回答的人的错。如果需要另一种解决方案,那么最好提出另一个问题,可能会链接到这个问题以供参考,并包括您当前的结果与预期结果以及有关您现在遇到的困难的具体细节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2018-12-05
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多