【发布时间】:2014-01-14 11:01:44
【问题描述】:
我使用 BeautifulSoup 和 urllib 编写了一个脚本,它遍历 URL 列表并下载某些文件类型的项目。
我遍历一个 URL 列表,从每个 URL 中创建一个汤对象并解析链接。
我遇到的问题是我发现有时源中的链接是不同的,即使我正在处理的所有链接都在同一个网站中。例如,有时会是 '/dir/pdfs/file.pdf' 或 'pdf/file.pdf' 或 '/pdfs/file.pdf'。
所以,如果有完整的 URL,urlretrieve() 知道如何处理它,但如果它只是上面列出的子目录,它会返回错误。我当然可以手动点击源链接,但urlretrieve() 不知道如何处理它,所以我必须在urlretrieve() 中添加一个基本 URL(如www.example.com/ 或www.example.com/dir/)打电话。
我在创建这样一种情况时遇到了麻烦所以我可以手动抓取它。
有人能指出我正确的方向吗?
URLs = []
BASEURL = []
FILETYPE = ['\.pdf$','\.ppt$', '\.pptx$', '\.doc$',
'\.docx$', '\.xls$', '\.xlsx$', '\.wmv$']
def main():
for link in soup.findAll(href = compile(types)):
file = link.get('href')
filename = file.split('/')[-1]
urlretrieve(filename)
print file
if __name__ == "__main__":
for url in URLs:
html_data = urlopen(url)
soup = BeautifulSoup(html_data)
for types in FILETYPE:
main()
【问题讨论】:
标签: python beautifulsoup urllib