我是Python [运行2.7.x]的新手,我正在尝试从包含数千个链接的网页下载内容。这是我的代码:
import urllib2
i = 1
limit = 1441
for i in limit:
url = 'http://pmindia.gov.in/content_print.php?nodeid='+i+'&nodetype=2'
response = urllib2.urlopen(url)
webContent = response.read()
f = open('speech'+i+'.html', 'w')
f.write(webContent)
f.close
相当基本,但我得到其中一个或两个错误&#int; int对象不可迭代'或者'不能连接str和int'。这些是此页面上链接的可打印版本:http://pmindia.gov.in/all-speeches.php(1400个链接)。但节点ID从1到1441,这意味着缺少41个数字(这是一个单独的问题)。最后的最后一个问题:从长远来看,在下载数千个链接对象时,有没有办法并行运行它们以提高处理速度?
答案 0 :(得分:0)
试试这个:
for i in range(1, limit + 1):
...
range(M,N)返回从M(包括)到N(不包括)的数字列表。 见https://docs.python.org/release/1.5.1p1/tut/range.html
答案 1 :(得分:0)
您可能希望使用Scrapy或其他一些网络抓取框架来帮助您解决此问题。
答案 2 :(得分:0)
您的代码中存在一些错误。
使用这些修补程序,您的代码看起来像
import urllib2
i = 1
limit = 1441
for i in xrange(1,limit+1):
url = 'http://pmindia.gov.in/content_print.php?nodeid='+repr(i)+'&nodetype=2'
response = urllib2.urlopen(url)
webContent = response.read()
f = open('speech'+repr(i)+'.html', 'w')
f.write(webContent)
f.close