我仍然是 python 的新手,即使在尝试理解 Requests 模块的不同方法并阅读那里之后,也无法弄清楚如何处理这个错误以及如何处理它以避免它。
下面是简单的要求我用其中线环通过与不同的URL我试图访问一个文本文件,Ð的字典包含我正在使用的代理众多的URL列表。
import requests
import collections
# [...]
d = collections.deque(proxies)
with requests.session() as r:
d.rotate(-1)
page = r.get(line.rstrip(), proxies=d[0])
Run Code Online (Sandbox Code Playgroud)
它可以完美运行,直到列表中的代理之一出于某种原因超时并强制脚本引发此错误:
ProxyError Traceback (most recent call last)
C:\Python27\lib\site-packages\IPython\utils\py3compat.pyc in execfile(fname, glob, loc)
195 else:
196 filename = fname
--> 197 exec compile(scripttext, filename, 'exec') in glob, loc
198 else:
199 def execfile(fname, *where):
C:\Users\Christopher Fargere\desktop\python\quick_scraper.py in <module>()
72 with requests.session() as r:
73 d.rotate(-1)
---> 74 page = r.get(line.rstrip(), proxies=d[0])
75 print …Run Code Online (Sandbox Code Playgroud) 当我尝试:
import requests
data = requests.get("https://api.nomi.com/api/admin/stores?v=3&k=XXXXXXX&account=XXX+XXX", verify=False)
print data.text
Run Code Online (Sandbox Code Playgroud)
我得到了适当的回应.
但是当我尝试:
import requests
payload = {"v": "3", "k": "XXXXXXX", "account": "XXX XXX"}
data = requests.get("https://api.nomi.com/api/admin/stores?", data=payload, verify=False)
print data.text
Run Code Online (Sandbox Code Playgroud)
我收到401未经授权的回复.
知道为什么吗?
当使用请求库检索pdf文件时,我注意到内存使用量大大增加。该文件本身约为4MB,但是分配给python进程的物理内存增加了150MB以上!
是否有人知道这种行为的可能原因(或解决方法)?
这是测试用例:
import requests,gc
def dump_mem():
s = open("/proc/self/status").readlines()
for line in s:
if line.startswith("VmRSS"):
return line
Run Code Online (Sandbox Code Playgroud)
以下是我在解释器中得到的输出。
>>> gc.collect()
0
>>> dump_mem()
'VmRSS:\t 13772 kB\n'
>>> gc.collect()
0
>>> r = requests.get('http://www.ipd.uni-karlsruhe.de/~ovid/Seminare/DWSS05/Ausarbeitungen/Seminar-DWSS05')
>>> gc.collect()
5
>>> dump_mem()
'VmRSS:\t 20620 kB\n'
>>> r.headers['content-length']
'4089190'
>>> dump_mem()
'VmRSS:\t 20628 kB\n'
>>> gc.collect()
0
>>> c = r.content
>>> dump_mem()
'VmRSS:\t 20628 kB\n'
>>> gc.collect()
0
>>> t = r.text
>>> gc.collect()
8
>>> dump_mem()
'VmRSS:\t 182368 kB\n'
Run Code Online (Sandbox Code Playgroud)
显然,我不应该尝试将pdf文件解码为文本。但是,这种行为的原因到底是什么?
我需要使用一个进行cURL调用的API.此处显示的API:https://www.pivotaltracker.com/help/api/rest/v5.我在Python 2.7中编码并下载了Requests模块以用于cURL调用,但是我不确定如何执行此操作.这是我到目前为止:
import requests
username = 'my_username'
password = 'my_password'
url = 'https://www.pivotaltracker.com/n/projects/my_project_number'
r = requests.get(url, auth=(username, password))
Run Code Online (Sandbox Code Playgroud)
既然我有响应r,我该怎么做才能使用cURL调用来使用API函数,例如GET/projects/{project_id}/epics/{epic_id}函数.对此功能的cURL调用是:
export TOKEN='your Pivotal Tracker API token'
export PROJECT_ID=99
curl -X GET -H "X-TrackerToken: $TOKEN" "https://www.pivotaltracker.com/services/v5/projects/$PROJECT_ID/epics/4"
Run Code Online (Sandbox Code Playgroud)
感谢您的任何帮助,您可以提供!
编辑(感谢@Rob Watts)现在这是我的代码:
import requests
username = 'my_username'
password = 'my_password'
url = 'https://www.pivotaltracker.com/services/v5/me'
r = requests.get(url, auth=(username, password))
response_json = r.json()
token = response_json['api_token']
project_id = 'my_project_id'
url = 'https://www.pivotaltracker.com/services/v5/projects/{}/epics/1'
r = requests.get(url.format(project_id), headers={'X-TrackerToken':token})
print r.text
Run Code Online (Sandbox Code Playgroud)
但它仍然无法正常工作.这是输出:
{
"code": "unfound_resource", …Run Code Online (Sandbox Code Playgroud) 我在 mac 上并尝试了以下操作:
easy_install requests
和
pip install requests
当我import requests在 REPL python 中尝试命令时,出现以下错误
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "requests.py", line 4, in <module>
from requests.auth import HTTPBasicAuth
ImportError: No module named auth
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
这是我的示例 curl 请求。
curl -g -i -X 'GET' 'https://us-ny-3.cloud.rac.com:8777/v2/meters' -H 'User-Agent: ceilometerclient.openstack.common.apiclient' -H 'X-Auth-Token: {SHA1}e8198c33b3d1b0748fa3db5cd6821d33951d67c8'
Run Code Online (Sandbox Code Playgroud)
我想使用 Python 请求模块复制相同的请求。
request.get(' https://us-ny-3.cloud.rac.com:8777/v2/meters ') 是我使用的,但我不确定如何传递 x-auth-token。
我想要做的是构建一个简单的爬虫来帮助我从 Ultimate-Guitar 下载吉他谱。我可以为它提供一个乐队的 URL,它会抓取所有列为“Guitar Pro”标签的标签的链接。
一个典型的链接如下所示:
https://tabs.ultimate-guitar.com/a/agalloch/you_were_but_a_ghost_in_my_arms_guitar_pro.htm
我可以使用此链接做的是使用以下代码找到 tab_id:
for tabid in tab.findAll("input", {"type" : "hidden", "name" : "id", "id" : "tab_id"}):
tabID = tabid.get("value")
Run Code Online (Sandbox Code Playgroud)
我正在尝试做的是使用它来构建指向实际下载的链接。我遇到问题的地方在这里。我可以构建的最佳链接如下所示:
请注意,该 URL 末尾的 id 是我之前提到的 tab_id。
如果在浏览器中输入此链接将立即导致下载。我遇到问题的地方是我找不到任何方法来生成依赖于实际文件名的链接。此文件名应该类似于 [此处的歌曲名称].gp5。其他可接受的文件类型可能是 .gpx、.gp4 和 .gp3。
我想要做的是获取实际文件名,以便我可以正确保存文件(如果下载被命名为垃圾文件,例如 ID,这对我没有帮助,因为这对我来说是一个无用的文件名,我显然需要适当的扩展)。有没有办法获取上面的链接并正确初始化下载,或者我可能不走运?我确定有一种方法可以满足我的需求,只是我对这类事情没有足够的经验。我对请求和诸如此类的东西一无所知,所以也许可以提供此 URL 的内容并获得下载作为回报?
注意:如果获取实际文件名和扩展名太困难,我确实有解决方法的想法,但我显然至少需要适当的扩展名。
我需要从外部源下载文件,我使用基本身份验证登录到 URL
import requests
response = requests.get('<external url', auth=('<username>', '<password>'))
data = response.json()
html = data['list'][0]['attachments'][0]['url']
print (html)
data = requests.get('<API URL to download the attachment>', auth=('<username>', '<password>'), stream=True)
print (data.content)
Run Code Online (Sandbox Code Playgroud)
我低于输出
<url to download the binary data>
\x00\x00\x13\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xcb\x00\x00\x1e\x00\x1e\x00\xbe\x07\x00\x00.\xcf\x05\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)
我期待在同一会话中下载 word 文档的 URL。
from requests import get
get('http://www.fb.com')
<Response [200]>
get('http://www.subscene.com')
<Response [403]
Run Code Online (Sandbox Code Playgroud)
我正在尝试构建一个网络抓取工具来抓取和下载字幕。但是我无法请求任何字幕页面,因为它们返回响应代码 403。
无论我输入正确的数字,它仍然会返回"再试一次".我怎么能纠正这个?
import random
from random import randint
num = randint(1000, 9999)
print (num)
while True:
guess = input ("Please guess a four digit number. ")
print (guess)
if guess == num:
print ("Well Done!")
else:
print ("Try again")
Run Code Online (Sandbox Code Playgroud) python-requests ×10
python ×9
curl ×2
python-2.7 ×2
python-3.x ×2
proxy ×1
urllib2 ×1
variables ×1
web-crawler ×1
web-scraping ×1