python-3.x - 我如何获得一张表格并将其放入 Excel 中而无需长代码

标签 python-3.x excel web-scraping css-selectors

我有一个包含冠状病毒数据的谷歌表。我想使用 worldometers 网站对其进行更新。我不想为代码中数千个单元格中的每一个复制 CSS 选择器。

我尝试获取表格,但每个表格后面都用换行符分隔。我得到了带有以下代码的表格

    import bs4
    import requests

    res = requests.get('https://www.worldometers.info/coronavirus')
    soup = bs4.BeautifulSoup(res.text, 'html.parser')
    print(len(soup.select('table')))
    txt = soup.select('table')[1]
    print(txt.text)

有没有办法使我们从表格中获得的内容变成可以放入 excel 的格式,或者将表格 HTML 本身放入 excel 中,以便正确格式化。

最佳答案

我建议你看看以下 python 模块:

  • pandas :用于处理表格数据( official documentationguide to convert an HTML table into excel );
  • openpyxl : 对于 Excel 电子表格(见 this guide );
  • EZSheets ;对于 Google 电子表格(参见 this guide)。

  • 我希望这些资源对您有所帮助。

    编辑:下面的代码(基于 this )应该允许您检索表。
    import pandas as pd, openpyxl, os.path
    
    if os.path.isfile("coronaData.xlsx") == False:
        openpyxl.Workbook().save("coronaData.xlsx")
    
    url = "https://www.worldometers.info/coronavirus"
    hdr = {
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.75 Safari/537.36",
        "X-Requested-With": "XMLHttpRequest"
        }
    
    #See https://stackoverflow.com/questions/45943179/python-pandas-typeerror-first-argument-must-be-string-or-compiled-pattern#45944194
    key = str(frozenset(hdr.items())) 
    
    table = pd.read_html(url, key)[0] 
    
    table.to_excel("coronaData.xlsx") 
    
    
    

    但是,我一直偶然发现错误 urllib.error.HTTPError: HTTP Error 403: Forbidden ,这可能可以通过正确的标题(hdr)来解决。也许使用另一个网站会更容易(没有 hdr 和 key 变量;例如 Wikipedia )。

    关于python-3.x - 我如何获得一张表格并将其放入 Excel 中而无需长代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61560648/

    相关文章:

    没有 Selenium 的网页上的 Python 单击按钮

    Java - 如何加载 HTML 网站的完整源代码

    python - 如何让子类使用父类的默认值?

    python - 如何使用for循环获取变量名

    python - 如何在 VSCode 中启动 django unittest?

    java - 从 Excel 第一列获取错误的数值

    python - 网址库 "module object is not callable"

    vba - 无法让Excel宏在for循环后返回

    excel - Excel 2013停止在子工作

    python - scrapy 分页 Selenium python