0

编辑:只是为了澄清我正在使用 python,并希望在 python 中执行此操作。

我正在为我们大学的一个研究项目收集数据。基本上我需要从监控欧洲议会的网站上抓取大量信息。以下是一个网站的 url 外观示例:

http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-2010-0190&language=EN

地址参考部分后面的数字是指:A7 = 正在开会的议会(以前的议会是 A6 等),2010 = 年份,0190 = 文件编号。

我想要做的是创建一个变量,其中包含不同议会的所有 url,所以我可以循环这个变量并从网站上抓取信息。

PS:我试过这个:

number = range(1,190,1) 

   for i in number: 
       search_url = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-2010-" + str(number[i]) +"&language=EN" 

      results = search_url 
      print results

但这给了我以下错误: Traceback(最近一次调用最后一次):文件“”,第 7 行,在 IndexError:列表索引超出范围

4

4 回答 4

1

你可以使用 python 和 wget 吗?遍历存在的会话,并创建一个字符串给 wget?还是那是矫枉过正?

于 2010-06-30T15:18:56.400 回答
1

如果我理解正确,您只是希望能够遍历议会?

即你想要A7、A6、A5...?

如果这就是你想要的一个简单的循环可以处理它:

for p in xrange(7,0, -1):
    parliment = "A%d" % p
    print p

对于其他值,类似的循环也可以工作:

for year in xrange(2010, 2000, -1):
    print year

for filenum in xrange(100,200):
    fnum = "%.4d" % filenum
    print fnum

您可以轻松地以正确的顺序嵌套循环以生成所需的组合。!

编辑:

字符串格式非常有用,以下是您可以使用示例执行此操作的方法:

# Just create a string with the format specifier in it: %.4d - a [d]ecimal with a
# precision/width of 4 - so instead of 3 you'll get 0003
search_url = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A7-2010-%.4d&language=EN"

# This creates a Python generator. They're super powerful and fun to use,
# and you can iterate over them, just like a collection.
# 1 is the default step, so no need for it in this case
for number in xrange(1,190):   
    print search_url % number

字符串格式化需要一个带有各种说明符的字符串——你会认出它们,因为它们里面有 %——后面是 % 和一个包含格式字符串参数的元组。

如果要添加年份和议会,请将字符串更改为: search_url = "http://www.europarl.europa.eu/sides/getDoc.do?type=REPORT&mode=XML&reference=A%d-%d-%.4d&language=EN"

重要的变化在这里:reference=A %d- %d- %.4d&language=EN

这意味着您需要像这样传递 3 位小数:

print search_url % (parliment, year, number)

于 2010-06-30T15:30:10.680 回答
1

对不起,我不能给这个评论,但我还没有足够高的分数。

查看您在上面评论中引用的代码,您的问题是您正在尝试添加一个字符串和一个整数。虽然某些语言会进行即时转换(在工作时很有用,但在不工作时会令人困惑),您必须使用str().

它应该是这样的:

"http://firstpartofurl" + str(number[i]) + "restofurl"

或者,您可以使用字符串格式(使用%等作为韦恩的答案)。

于 2010-06-30T16:39:11.487 回答
0

使用硒。由于它控制使用真正的浏览器,因此它可以处理使用复杂 javascript 的网站。许多语言绑定可用,包括 python。

于 2010-06-30T15:23:15.970 回答