2

我需要使用 colaboratory 使用 beautifulsoup 将文件下载到我的 googledrive。

我正在使用下面的代码:

u = urllib.request.urlopen("https://s3.amazonaws.com/video.udacity-data.com/topher/2018/November/5bf32290_turnstile/turnstile.html")
html = u.read()

soup = BeautifulSoup(html, "html.parser")
links = soup.find_all('a')

我只需要名称包含“1706”的链接。所以,我正在尝试:

for link in links:
  files = link.get('href')
  if '1706' in files: 
    urllib.request.urlretrieve(filelink, filename)

并且不工作。“TypeError:'NoneType' 类型的参数不可迭代”。好的,我知道为什么会出现此错误,但我不知道如何修复,缺少什么。

使用这个

urllib.request.urlretrieve("https://s3.amazonaws.com/video.udacity-data.com/topher/2018/November/5bf32142_turnstile-170624/turnstile-170624.txt", 'turnstile-170624.txt')

我可以获取单个文件。但我想要一些方法来下载所有文件(包含'1706')并将这些文件保存到我的谷歌驱动器。

我怎样才能做到这一点?

4

2 回答 2

0

您可以使用带有 * 包含运算符的属性 = 值 css 选择器来指定 href 属性值包含 1706

links = [item['href'] for item in soup.select("[href*='1706']")]
于 2019-04-17T17:32:30.143 回答
0

从改变

soup.find_all('a')

为此

soup.select('a[href]')

它将仅选择具有 href 属性的 a 标记。

于 2019-04-18T01:34:28.920 回答