簡體   English   中英

如何從多個URL讀取Python中的HTML文件?

[英]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/十次。

可以通過以下任一方法解決此問題:

希望我能幫上忙。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM