从网页、网络抓取工具下载 xls 文件

download xls file from a webpage, web scraper

我是 python 世界的新手,我想进行网络抓取。

我想从以下网站下载一些xls文件到指定位置文件夹。 (例如桌面)

你能帮我解决这个问题吗?

网站是

https://www.ici.org/research/stats

我已经尝试过可用于类似问题的代码,但我没能使它们适用于我的情况:(

非常感谢。

要使用 BeautifulSoup,您首先需要了解 html 源代码的结构。您可以通过简单的 google 搜索找到一些基本教程。

但最基本的是 html 代码包含具有 tags 的元素,并且这些标签具有 attributes。您要查找的内容在 <a> 标签下,相应的 link 作为 href 属性。所以我们需要找到所有 <a> 标签,它们有一个 href 属性,扩展名为 excel xls.

您可以通过检查页面来查看(右键单击页面并 select 检查,或 ctrl-shift-I 打开开发工具窗格。然后您可以四处单击以找到使用相应的 html 代码)并查看 html 来源:

获得这些后,您将遍历它们以打开和保存。我们也只会为 "Supplement: Worldwide Public Tables" 在 text/content 中的标记元素执行此操作。

只需确保选择正确的根目录即可将其保存在 output = open('C:/path/to/desktop/' + filename, 'wb'):

的位置
import os
import requests
from bs4 import BeautifulSoup


desktop = os.path.expanduser("~/Desktop")

url = 'https://www.ici.org/research/stats'

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')
excel_files = soup.select('a[href*=xls]')

for each in excel_files:
    if 'Supplement: Worldwide Public Tables' in each.text:
        link = 'https://www.ici.org' + each['href']

        filename = each['href'].split('/')[-1]

        if os.path.isfile(desktop + '/' + filename):
            print ('*** File already exists: %s ***' %filename)
            continue

        resp = requests.get(link)
        output = open(desktop + '/' + filename, 'wb')
        output.write(resp.content)
        output.close()
        print ('Saved: %s' %filename)