簡體   English   中英

從Python中的HTML鏈接下載文本數據

[英]Download text data from HTML link in Python

嗨,我想下載HTML鏈接上托管的帶分隔符的文本。 (該鏈接只能在專用網絡上訪問,因此不能在此處共享)。

在R中,以下功能解決了這個問題(所有其他功能都給出了“未經授權的訪問”或“ 401”錯誤)

url = 'https://dw-results.ansms.com/dw-platform/servlet/results? job_id=13802737&encoding=UTF8&mimeType=plain'
download.file(url, "~/insights_dashboard/testing_file.tsv")
a = read.csv("~/insights_dashboard/testing_file.tsv",header = T,stringsAsFactors = F,sep='\t')

我想在Python中做同樣的事情,為此我使用了:

(A)urllib和request.get()

import urllib.request

url_get = requests.get(url, verify=False)
urllib.request.urlretrieve(url_get, 'C:\\Users\\cssaxena\\Desktop\\24.tsv')

(B)requests.get()和read.html

url='https://dw-results.ansms.com/dw-platform/servlet/results? job_id=13802737&encoding=UTF8&mimeType=plain'
s = requests.get(url, verify=False)
a = pd.read_html(io.StringIO(s.decode('utf-8')))

(C)使用wget:

import wget
url = 'https://dw-results.ansms.com/dw-platform/servlet/results? job_id=13802737&encoding=UTF8&mimeType=plain'  
wget.download(url,--auth-no-challenge, 'C:\\Users\\cssaxena\\Desktop\\24.tsv')

要么

wget --server-response -owget.log "https://dw-results.ansms.com/dw-platform/servlet/results? job_id=13802737&encoding=UTF8&mimeType=plain" 

注意:URL不需要任何憑據,瀏覽器可以訪問該URL,並且可以使用R和download.file進行下載。 我正在尋找Python中的解決方案

def geturls(path):
    yy=open(path,'rb').read()
    yy="".join(str(yy))
    yy=yy.split('<a')

    out=[]
    for d in yy:
        z=d.find('href="')
        if z>-1:
            x=d[z+6:len(d)]
            r=x.find('"')
            x=x[:r]
            x=x.strip(' ./')
                 #
            if (len(x)>2) and (x.find(";")==-1):
                out.append(x.strip(" /"))
    out=set(out)
    return(out)

pg="./test.html"# your html

url=geturls(pg)

print(url)

暫無
暫無

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

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