0

http://www.namejet.com/pages/downloads.aspxから今日のプレリリース ドメイン .txt ファイルのリストをダウンロードして保存する関数を作成しています。私はjsonを使ってそれを達成しようとしています。

import json
import requests

def hello():
    r = requests.get('http://www.namejet.com/pages/downloads.aspx') 
    #Replace with your website URL

    with open("a.txt", "w") as f: 
    #Replace with your file name
        for item in r.json or []:
            try:
                f.write(item['name']['name'] + "\n") 
            except KeyError: 
                pass  

hello()

Python を使用してプレリリース ドメインで構成されるファイルをダウンロードする必要があります。どうやってやるの?上記のコードは正しい方法ですか?

4

2 に答える 2

2

mechanize は javascript にはあまり役に立たないと思います。 seleniumを使用してください。次に例を示します。

In [1]: from selenium import webdriver
In [2]: browser=webdriver.Chrome() # Select browser that you want to automate 
In [3]: browser.get('http://www.namejet.com/pages/downloads.aspx')
In [4]: element=browser.find_element_by_xpath(
            '//a[@id="ctl00_ContentPlaceHolder1_hlPreRelease1"]')

In [5]: element.click()

これで、ダウンロード フォルダーに見つかりprerelease_10-08-2012.txt、通常の方法で開くことができます。

于 2012-10-08T05:03:27.907 に答える
0

あなたのアプローチにはいくつか問題があります。

  1. このページはjsonを返しません。したがって、ページに正常にアクセスした場合でも、r.json空になります。

    >>> import requests
    >>> r = requests.get('http://www.namejet.com/pages/downloads.aspx')
    >>> r.json
    
  2. あなたが探しているファイルは、ポストバックリンクの後ろに隠されています。JavaScriptを理解できないため、リクエストを使用して「実行」することはできません。

上記に照らして、より良いアプローチはmechanize、ブラウザをエミュレートするためにまたは代替手段を使用することです。また、直接リンクを提供するように会社に依頼することもできます。

于 2012-10-08T04:45:53.437 に答える