下午好,
我对Webscraping非常陌生。我正在尝试从开源门户网站抓取数据集。只是为了弄清楚如何抓取网站。 我正在尝试从data.toerismevlaanderen.be换一个数据集 这是我想要的数据集:https://data.toerismevlaanderen.be/tourist/reca/beer_bars
我总是以http错误结尾:HTTP错误404:找不到
这是我的代码:
import requests
import urllib.request
import time
from bs4 import BeautifulSoup
url = 'https://data.toerismevlaanderen.be/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
soup.findAll('a')
one_a_tag = soup.findAll('a')[35]
link = one_a_tag['href']
download_url = 'https://data.toerismevlaanderen.be/'+ link
urllib.request.urlretrieve(download_url,'./'+link[link.find('/tourist/reca/beer_bars_')+1:])
time.sleep
我在做什么错了?
答案 0 :(得分:1)
问题如下:
link = one_a_tag['href']
print(link)
这将返回一个链接:https://data.toerismevlaanderen.be/
然后您要通过以下操作将此link
添加到download_url
:
download_url = 'https://data.toerismevlaanderen.be/'+ link
因此,如果您print(download_url)
,您将得到:
https://data.toerismevlaanderen.be/https://data.toerismevlaanderen.be/
这不是有效的网址。
基于评论的更新
问题是您抓取的文本中的任何地方都没有tourist/activities/breweries
。
如果您写:
for link in soup.findAll('a'):
print(link.get('href'))
您会看到所有的href标签。没有一个包含tourist/activities/breweries
但是
如果只需要链接data.toerismevlaanderen.be/tourist/activities/breweries
,则可以执行以下操作:
download_url = link + "tourist/activities/breweries"
答案 1 :(得分:1)
这里有an API,所以我会用它
例如
import requests
r = requests.get('https://opendata.visitflanders.org/tourist/reca/beer_bars.json?page=1&page_size=500&limit=1').json()
答案 2 :(得分:0)
您会获得许多绝对链接。将其添加到原始网址以进行新请求将无法正常工作。只需请求获取的“链接”即可代替