我正在尝试从谷歌驱动器下载文件,我所拥有的只是驱动器的URL.
我已经阅读了关于google api的内容,该内容涉及一些drive_service和MedioIO,它还需要一些凭据(主要是json文件/ oauth).但我无法知道它是如何工作的.
另外,尝试过urllib2 urlretrieve,但我的情况是从驱动器获取文件.尝试'wget'也没用.
尝试了pydrive库.它具有良好的上传功能,但没有下载选项.
任何帮助将不胜感激.谢谢.
我有一段代码,我无法弄清楚如何进行单元测试!该模块使用urllib2从外部XML提要(twitter,flickr,youtube等)中提取内容.这是一些伪代码:
params = (url, urlencode(data),) if data else (url,)
req = Request(*params)
response = urlopen(req)
#check headers, content-length, etc...
#parse the response XML with lxml...
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是挑选响应并加载它以进行测试,但显然urllib的响应对象是不可序列化的(它引发了异常).
仅仅从响应主体保存XML并不理想,因为我的代码也使用了头信息.它旨在作用于响应对象.
当然,在单元测试中依赖外部数据来源是一个可怕的想法.
那么我该如何为此编写单元测试呢?
我想下载生成的网页Javascript,并将其存储在Python代码中的字符串变量中.单击按钮时会生成页面.
如果我知道我会使用的结果URL,urllib2但事实并非如此.
谢谢
寻找一种使用Python urllib2或任何其他Python库获取HTTP响应的字符集/编码信息的简单方法.
>>> url = 'http://some.url.value'
>>> request = urllib2.Request(url)
>>> conn = urllib2.urlopen(request)
>>> response_encoding = ?
Run Code Online (Sandbox Code Playgroud)
我知道它有时出现在'Content-Type'标题中,但该标题有其他信息,并且它嵌入在我需要解析的字符串中.例如,Google返回的Content-Type标头是
>>> conn.headers.getheader('content-type')
'text/html; charset=utf-8'
Run Code Online (Sandbox Code Playgroud)
我可以使用它,但我不确定格式的一致性.我很确定charset可能完全丢失,所以我必须处理这个边缘情况.某种类型的字符串拆分操作使得"utf-8"从中看出来似乎是做错这种事情的错误方法.
>>> content_type_header = conn.headers.getheader('content-type')
>>> if '=' in content_type_header:
>>> charset = content_type_header.split('=')[1]
Run Code Online (Sandbox Code Playgroud)
这种代码感觉就像做了太多的工作.我也不确定它是否适用于所有情况.有没有人有更好的方法来做到这一点?
我正在尝试使用urllib2打开本地文件.我该怎么做呢?当我用urllib尝试以下行时:
resp = urllib.urlopen(url)
Run Code Online (Sandbox Code Playgroud)
它工作正常,但当我切换到:
resp = urllib2.urlopen(url)
Run Code Online (Sandbox Code Playgroud)
我明白了:
ValueError: unknown url type: /path/to/file
Run Code Online (Sandbox Code Playgroud)
那个文件肯定会退出.
谢谢!
我见过很多次这样的问题,但没有一个是有帮助的
我试图将数据提交到网上的表格我已经尝试过请求,并且urllib和没有工作
例如,这里是应该在SO上搜索[python]标签的代码:
import urllib
import urllib2
url = 'http://stackoverflow.com/'
# Prepare the data
values = {'q' : '[python]'}
data = urllib.urlencode(values)
# Send HTTP POST request
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
html = response.read()
# Print the result
print html
Run Code Online (Sandbox Code Playgroud)
但当我运行它时,我得到主页的html源
这是一个使用请求的示例:
import requests
data= {
'q': '[python]'
}
r = requests.get('http://stackoverflow.com', data=data)
print r.text
Run Code Online (Sandbox Code Playgroud)
同样的结果!我不明白为什么这些方法不起作用我已经在各种网站上尝试过但没有成功,所以如果有人成功完成了这个请告诉我如何!
非常感谢!
我正在运行一个Python程序,它获取一个UTF-8编码的网页,我使用BeautifulSoup从HTML中提取一些文本.
但是,当我将此文本写入文件(或在控制台上打印)时,它将以意外编码形式写入.
示例程序:
import urllib2
from BeautifulSoup import BeautifulSoup
# Fetch URL
url = 'http://www.voxnow.de/'
request = urllib2.Request(url)
request.add_header('Accept-Encoding', 'utf-8')
# Response has UTF-8 charset header,
# and HTML body which is UTF-8 encoded
response = urllib2.urlopen(request)
# Parse with BeautifulSoup
soup = BeautifulSoup(response)
# Print title attribute of a <div> which uses umlauts (e.g. können)
print repr(soup.find('div', id='navbutton_account')['title'])
Run Code Online (Sandbox Code Playgroud)
运行它会得到结果:
# u'Hier k\u0102\u015bnnen Sie sich kostenlos registrieren und / oder einloggen!'
Run Code Online (Sandbox Code Playgroud)
但我希望Python Unicode字符串ö在单词中呈现können为\xf6:
# …Run Code Online (Sandbox Code Playgroud) 我想在互联网上找到图像的尺寸.我试过用
from PIL import Image
import urllib2 as urllib
fd = urllib.urlopen("http://a/b/c")
im = Image.open(fd)
im.size
Run Code Online (Sandbox Code Playgroud)
正如在这个答案中所建议的那样,但是我收到了错误消息
addinfourl instance has no attribute 'seek'
Run Code Online (Sandbox Code Playgroud)
我检查过并且返回的对象urllib2.urlopen(url)似乎没有根据的搜索方法dir.
那么,我需要做些什么才能将图像从Internet加载到PIL中?
我正在尝试使用Python 2对页面执行HEAD请求.
我在尝试
import misc_urllib2
.....
opender = urllib2.build_opener([misc_urllib2.MyHTTPRedirectHandler(), misc_urllib2.HeadRequest()])
Run Code Online (Sandbox Code Playgroud)
用misc_urllib2.py含
class HeadRequest(urllib2.Request):
def get_method(self):
return "HEAD"
class MyHTTPRedirectHandler(urllib2.HTTPRedirectHandler):
def __init__ (self):
self.redirects = []
def http_error_301(self, req, fp, code, msg, headers):
result = urllib2.HTTPRedirectHandler.http_error_301(
self, req, fp, code, msg, headers)
result.redirect_code = code
return result
http_error_302 = http_error_303 = http_error_307 = http_error_301
Run Code Online (Sandbox Code Playgroud)
但我得到了
TypeError: __init__() takes at least 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
如果我这样做
opender = urllib2.build_opener(misc_urllib2.MyHTTPRedirectHandler())
Run Code Online (Sandbox Code Playgroud)
然后它工作正常
我试图打开以下网站并检索初始cookie并将其用于第二个url-open但如果您运行以下代码则输出2个不同的cookie.如何在第二个url-open中使用初始cookie?
import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
home = opener.open('https://www.idcourts.us/repository/start.do')
print cj
search = opener.open('https://www.idcourts.us/repository/partySearch.do')
print cj
Run Code Online (Sandbox Code Playgroud)
每次输出显示2个不同的cookie,如您所见:
<cookielib.CookieJar[<Cookie JSESSIONID=0DEEE8331DE7D0DFDC22E860E065085F for www.idcourts.us/repository>]>
<cookielib.CookieJar[<Cookie JSESSIONID=E01C2BE8323632A32DA467F8A9B22A51 for www.idcourts.us/repository>]>
Run Code Online (Sandbox Code Playgroud) python ×10
urllib2 ×10
urllib ×3
download ×2
cookielib ×1
head ×1
html ×1
httprequest ×1
javascript ×1
post ×1
pydrive ×1
python-2.7 ×1
request ×1
unicode ×1
unit-testing ×1
utf-8 ×1