WebScraping 用于下载某些 .csv 文件
WebScraping for downloading certain .csv files
我有这个问题。如标题所述,我需要从网站下载某些 .csv 文件,但我遇到了麻烦。我对编程非常陌生,尤其是这个主题(网络抓取)
from bs4 import BeautifulSoup as BS
import requests
DOMAIN = 'https://datos.gob.ar'
URL = 'https://datos.gob.ar/dataset/cultura-mapa-cultural-espacios-culturales/'
FILETYPE = ".csv"
def get_soup(url):
return BS(requests.get(url).text, 'html.parser')
for link in get_soup(URL).find_all('a'):
file_link = link.get('href')
if FILETYPE in file_link:
print(file_link)
此代码显示了所有可用的 .csv 文件,但我只需要下载以“biblioteca popular.csv”、“cine.csv”和“museos.csv”结尾的文件。 17=]
也许这是一个非常简单的任务,但我找不到
您可以提取包含该信息的 JavaScript 对象,否则这些信息将被加载到您在浏览器中通过 JavaScript 运行 看到的位置。然后您需要做一些 Unicode 代码点清理和字符串清理并解析为 JSON。您可以使用关键字列表从所需的网址 select。
Unicode 清理方法
import json
import requests
import re
URL = 'https://datos.gob.ar/dataset/cultura-mapa-cultural-espacios-culturales/'
r = requests.get(URL)
search = ["Bibliotecas Populares", "Salas de Cine", "Museos"]
s = re.sub( r'\n\s{2,}', '', re.search(r'"@graph": (\[[\s\S]+{0}[\s\S]+)}}'.format(search[0]), r.text).group(1))
data = json.loads(re.sub(r'\"', '', re.sub(r'\u([0-9a-fA-F]{4})',lambda m: chr(int(m.group(1),16)),s)))
for i in data:
if 'schema:name' in i:
name = i['schema:name']
if name in search:
print(name)
print(i['schema:url'])
我有这个问题。如标题所述,我需要从网站下载某些 .csv 文件,但我遇到了麻烦。我对编程非常陌生,尤其是这个主题(网络抓取)
from bs4 import BeautifulSoup as BS
import requests
DOMAIN = 'https://datos.gob.ar'
URL = 'https://datos.gob.ar/dataset/cultura-mapa-cultural-espacios-culturales/'
FILETYPE = ".csv"
def get_soup(url):
return BS(requests.get(url).text, 'html.parser')
for link in get_soup(URL).find_all('a'):
file_link = link.get('href')
if FILETYPE in file_link:
print(file_link)
此代码显示了所有可用的 .csv 文件,但我只需要下载以“biblioteca popular.csv”、“cine.csv”和“museos.csv”结尾的文件。 17=]
也许这是一个非常简单的任务,但我找不到
您可以提取包含该信息的 JavaScript 对象,否则这些信息将被加载到您在浏览器中通过 JavaScript 运行 看到的位置。然后您需要做一些 Unicode 代码点清理和字符串清理并解析为 JSON。您可以使用关键字列表从所需的网址 select。
Unicode 清理方法
import json
import requests
import re
URL = 'https://datos.gob.ar/dataset/cultura-mapa-cultural-espacios-culturales/'
r = requests.get(URL)
search = ["Bibliotecas Populares", "Salas de Cine", "Museos"]
s = re.sub( r'\n\s{2,}', '', re.search(r'"@graph": (\[[\s\S]+{0}[\s\S]+)}}'.format(search[0]), r.text).group(1))
data = json.loads(re.sub(r'\"', '', re.sub(r'\u([0-9a-fA-F]{4})',lambda m: chr(int(m.group(1),16)),s)))
for i in data:
if 'schema:name' in i:
name = i['schema:name']
if name in search:
print(name)
print(i['schema:url'])