[英]How do I read an HTML file in Python from multiple URLs?
我正在編寫一個腳本,該腳本將基於以下內容從基本HTML頁面提取數據:
URL中的第一個參數在-90.0和90.0(含)之間浮動,第二組數字在-180.0和180.0(含)之間。 該URL會將您定向到一個具有單個數字作為頁面正文的頁面(例如, http://jawbone-virality.herokuapp.com/scanner/desert/-89.7/131.56/ )。 我需要在附加到URL的所有頁面之間找到最大的病毒數。
所以,現在我讓它打印第一個和第二個數字,以及體內的數字(我們稱之為病毒性)。 每次我嘗試將其寫入文件時,它只是打印到控制台上,使我眼花and亂,並且出現錯誤。 有什么提示或我想念的東西嗎? 我是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()
謝謝!
寫入文件時,之前是否還有打印語句? 那么您的問題將是當您調用readlines()
時,Python 將文件指針前進到文件末尾 。 因此,對readlines()
的第二次調用將返回一個空列表,而您對第一個元素的訪問將導致IndexError
。
請參見以下示例執行:
filehandle = urllib.urlopen('http://jawbone-virality.herokuapp.com/scanner/desert/0/0/')
print(filehandle.readlines()) # prints ['5']
print(filehandle.readlines()) # prints []
解決方案是將結果保存到變量中,然后使用它。
filehandle = urllib.urlopen('http://jawbone-virality.herokuapp.com/scanner/desert/0/0/')
res = filehandle.readlines()[0]
print(res) # prints 5
print(res) # prints 5
但是,正如評論中已經指出的那樣,此處不需要調用readlines()
,因為似乎網站的格式只是一個純整數。 因此,線路的概念實際上並不存在,或者至少沒有提供更多信息。 因此,讓我們放棄它以換取更簡單的功能read()
(這里甚至不需要readline()
)。
filehandle = urllib.urlopen('http://jawbone-virality.herokuapp.com/scanner/desert/0/0/')
res = filehandle.read()
print(res) # prints 5
您的源代碼中還有另一個問題。 從您對urllib.urlopen()
使用中可以得出,您正在使用Python2。但是,在Python 2中,整數的除法像在C或Java中一樣被處理,它們導致整數被四舍五入。 因此,您將呼叫http://jawbone-virality.herokuapp.com/scanner/desert/-90/-180/
十次。
可以通過以下任一方法解決此問題:
from __future__ import division
str(x / 10.0)
和str(y / 10.0)
urllib2
希望我能幫上忙。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.