我正在编写一个函数,可以从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下载包含预发布域名的文件。我怎样才能做到这一点?上面的代码是正确的方法吗?
答案 0 :(得分:2)
我不认为机械化对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
,然后按常规方式打开它。
答案 1 :(得分:0)
我发现您的方法存在一些问题:
页面不返回任何json;因此,即使您成功访问该页面,r.json
也将为空:
>>> import requests
>>> r = requests.get('http://www.namejet.com/pages/downloads.aspx')
>>> r.json
您所追踪的文件隐藏在回发链接后面;你不能使用请求“执行”,因为它不会理解javascript。
鉴于上述情况,更好的方法是使用mechanize
或替代方案来模拟浏览器。您也可以要求该公司为您提供直接链接。