尝试从Python中的一系列URL下载数据(文本)

时间:2017-01-22 22:29:23

标签: python wget urllib glob

对于可能枯燥的问题感到抱歉。我试图一次性使用Python从一系列URL下载文本。他们遵循一个非常简单的结构:

" http://example.com/01000/01000/01000.htm&#34 ;; " http://example.com/01000/01001/01001.htm&#34 ;;

依此类推,最高可达01099。

获得文本后,我需要使用nltk工具包进行分析。我曾尝试在Windows上使用wget,但在命令行中无效。我想知道是否有一种方法,类似于glob模块,URL可以同时从这个范围下载数据。

(范围内还有一些空白网址。)

非常感谢你的帮助。

3 个答案:

答案 0 :(得分:1)

使用字符串操作获取URL后(看到您知道URL的结构),您可以使用Requests module

实施例

import requests

base_url = "http://example.com/01000/01001/0"
for i in range(1000, 1100):
    target_url = base_url + str(i) + ".htm"
    r = requests.get(target_url)

    print(r.text) # python 3 only

答案 1 :(得分:0)

您可以尝试我的python3-wget module。这是一个使用的例子;

#!/usr/bin/python3
#-*- coding:utf-8 -*-

import wget

urls = 'http://example.com/01000/01000/0'
for x in range(1000, 1099):
    url = urls + str(x) + '.htm' 
    filename = wget.download(url)

这将下载所有文件,如果您需要从页面中提取特定文本,您需要查看使用Requests和BeautifulSoup4创建简单的Web scraper。

答案 2 :(得分:0)

非常感谢你的帮助。最后,这就是我的代码的样子:

import requests
base_url = "http://example.com/01000/0"
for i in range(1000, 1100):
    target_url = base_url + str(i) + '/' + '0' + str(i) + ('.htm')
    r = requests.get(target_url)
    print(target_url)

    with open(str(i) + ".htm", 'w', encoding="iso-8859-1") as f:
    f.write(r.text)

 #The encoding is due to language specific text. 
#It downloaded all the files in the given range: http://example.com/01000/01000/01000.htm 
#to /01000/01099/01099.htm.