如何从多个url读取Python中的HTML文件?

2024-06-13 16:59:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本,该脚本将根据以下内容从基本HTML页面中提取数据:

URL中的第一个参数在-90.0和90.0(含)之间浮动,第二组数字在-180.0和180.0(含)之间。该URL将引导您指向一个以单个数字作为页面主体的页面(例如,http://jawbone-virality.herokuapp.com/scanner/desert/-89.7/131.56/)。我需要找到最大的病毒数量之间的所有网页所附的网址。在

所以,现在我让它打印第一个和第二个数字,以及体内的数字(我们称之为病毒性)。它只是打印到控制台上,每次我试图把它写入一个文件时,它就在我身上轰隆作响,我就会出错。有什么线索或是我遗漏的吗?我对Python很陌生,所以我不确定是否遗漏了什么。在

import shutil
import os
import time
import datetime
import math
import urllib
from array import array
myFile = open('test.html','w')
m = 5
for x in range(-900,900,1):
    for y in range(-1800,1800,1):
        filehandle = urllib.urlopen('http://jawbone-virality.herokuapp.com/scanner/desert/'+str(x/10)+'/'+str(y/10)+'/')
        print 'Planet Desert: (' + str(x/10) +','+ str(y/10) + '), Virality: ' + filehandle.readlines()[0] #lines
        #myFile.write('Planet Desert: (' + str(x/10) +','+ str(y/10) + '), Virality: ' + filehandle.readlines()[0])
myFile.close()
filehandle.close()

谢谢你!在


Tags: import脚本comhttpurl数字页面myfile
1条回答
网友
1楼 · 发布于 2024-06-13 16:59:38

写入文件时,是否仍保留以前的print语句?那么您的问题是当您调用readlines()时,Python advances the file pointer to the end of the file。因此,对readlines()的第二次调用将返回一个空列表,而对第一个元素的访问将导致IndexError。在

请参见以下示例执行:

filehandle = urllib.urlopen('http://jawbone-virality.herokuapp.com/scanner/desert/0/0/')
print(filehandle.readlines())  # prints ['5']
print(filehandle.readlines())  # prints []

解决方案是将结果保存到变量中,然后使用它。在

^{pr2}$

然而,正如在评论中已经指出的,在这里调用readlines()是不必要的,因为网站的格式似乎只是一个纯整数。所以线的概念并不存在,或者至少没有提供更多的信息。所以让我们放弃它来换取一个更简单的函数read()(这里甚至不需要readline())。在

filehandle = urllib.urlopen('http://jawbone-virality.herokuapp.com/scanner/desert/0/0/')
res = filehandle.read()
print(res)  # prints 5

源代码中还有另一个问题。从您对^{}的用法中,我可以得出,您使用的是python2。然而,在Python中,像在C或Java中一样处理2个整数的除法,结果是整数舍入到底数。因此,您将调用http://jawbone-virality.herokuapp.com/scanner/desert/-90/-180/十次。在

这可以通过以下方式解决:

  • ^{}
  • str(x / 10.0)和{}
  • 切换到python3并使用urllib2

希望我能帮忙。在

相关问题 更多 >