微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 BeautifulSoup 从 url 下载和导出 zip 文件

如何解决使用 BeautifulSoup 从 url 下载和导出 zip 文件

我查看了对以前的 zip 下载问题的答复,但一直遇到问题。我使用 BeatifulSoup 来识别我想使用以下代码下载的特定 zip 文件

state_fips = '06'
county_fips = '037'
url = 'https://www2.census.gov/geo/tiger/TIGER2020/ROADS/'
url_get = requests.get(url)
soup = BeautifulSoup(url_get.content,'html.parser')

# get state and county fips
st_cnty_string = f'tl_2020_{state_fips}{county_fips}'

然后我尝试将数据读取和写入文件,但我不断收到错误文件为 0 字节。我不确定问题出在哪里:

link = soup.findAll('a',attrs={'href': re.compile(st_cnty_string)})
data = urllib.request.urlretrieve(url,link.get('href'))
open('test.zip','wb').write(data)

在这次尝试中收到以下错误

Traceback (most recent call last):
  File "<input>",line 1,in <module>
TypeError: a bytes-like object is required,not 'tuple'

任何帮助将不胜感激!

解决方法

一个问题是 BeautifulSoup 返回相对链接。但是您需要一个完整的 url 来下载 zipfile。

试试这个:

for link in soup.findAll('a',attrs={'href': re.compile(st_cnty_string)}):
    link_abs = f'{url}/{link.get("href")}'
    with open('test.zip','wb') as f:
        f.write(requests.get(link_abs).content)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。