从OECD网站抓取并下载.csv

时间:2020-01-23 09:31:08

标签: python-3.x csv web-scraping download

很抱歉打扰您我的要求。我已经开始与BeautifulSoup库进行网络抓取。因为我必须从OECD网站下载一些数据,所以我想尝试一些网络抓取方法。更具体地说,我想从以下页面下载.csv文件: https://goingdigital.oecd.org/en/indicator/50/

如您所见,可以通过单击“下载数据”轻松下载数据。但是,由于我需要处理一些带有循环的递归下载,因此我尝试直接从Python控制台下载它。因此,通过检查页面,我证明了我在下图中报告的下载URL: enter image description here

因此,我编写了以下代码:

from bs4 import BeautifulSoup
import requests 
from requests import get

url = 'https://goingdigital.oecd.org/en/indicator/50/'
response = get(url)

print(response.text[:500])

html_soup = BeautifulSoup(response.text, 'html.parser')

type(html_soup)

containers = html_soup.find_all('div', {'class': 'css-cqestz e12cimw51'})
print(type(containers))
print(len(containers))

d = []
for a in containers[0].find_all('a', href = True):
    print(a['href'])
    d.append(a['href'])

对象容器由三个元素组成,因为存在三个具有指定类的div。第一个(我在循环中选择的一个)应该是包含我感兴趣的URL的一个。但是,我没有结果。相反,当我选择对象容器的第三个元素时,将得到以下输出:

https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fgoingdigital.oecd.org%2Fen%2Findicator%2F50%2F
https://twitter.com/intent/tweet?text=OECD%20Going%20Digital%20Toolkit&url=https%3A%2F%2Fgoingdigital.oecd.org%2Fen%2Findicator%2F50%2F
https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fgoingdigital.oecd.org%2Fen%2Findicator%2F50%2F
mailto:?subject=OECD%20Going%20Digital%20Toolkit%3A%20Percentage%20of%20individuals%20aged%2055-74%20using%20the%20Internet&body=Percentage%20of%20individuals%20aged%2055-74%20using%20the%20Internet%0A%0Ahttps%3A%2F%2Fgoingdigital.oecd.org%2Fen%2Findicator%2F50%2F

顺便说一下,对于此下载,我想它可能与以下thread有关。预先谢谢你!

1 个答案:

答案 0 :(得分:0)

从网站提取数据时,首先应检查要查找的内容是否在页面源中。如果它不在页面源代码中,则应尝试使用硒来进行网络清理。

当我检查了您提到的站点时,在页面源中看不到它,它表明您要在此页面上创建的链接是动态创建的。