我尝试了python请求库文档中提供的示例:
http://docs.python-requests.org/en/latest/user/advanced/#asynchronous-requests
与async.map(rs)我得到的响应代码,但我想请求每一页的内容.
out = async.map(rs)
print out[0].content
Run Code Online (Sandbox Code Playgroud)
例如,只是不工作.
我正在尝试获取此网址的内容" https://itunes.apple.com/in/genre/ios-business/id6000?mt=8 "并显示此错误
import requests
from lxml import html
page = requests.get("https://itunes.apple.com/in/genre/ios-business/id6000?mt=8")
tree = html.fromstring(page.text)
flist = []
plist = []
for i in range(0, 100):
app = tree.xpath("//div[@class='column first']/ul/li/a/@href")
ap = app[0]
page1 = requests.get(ap)
Run Code Online (Sandbox Code Playgroud)
代码是
Traceback (most recent call last):
File "/home/preetham/Desktop/eg.py", line 17, in <module>
page1 = requests.get(ap)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get
return request('get', url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/requests/sessions.py", line 383, in request
resp = self.send(prep, …Run Code Online (Sandbox Code Playgroud) 所以我最近偶然发现这个伟大的库在Python中处理HTTP请求; 在这里找到http://docs.python-requests.org/en/latest/index.html.
我喜欢使用它,但我无法弄清楚如何在我的获取请求中添加标题.救命?
这是API调用的原始请求:
POST http://192.168.3.45:8080/api/v2/event/log?sessionKey=b299d17b896417a7b18f46544d40adb734240cc2&format=json HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 86
Host: 192.168.3.45:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
{"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}"""
Run Code Online (Sandbox Code Playgroud)
此请求返回成功(2xx)响应.
现在我试图使用requests以下命令发布此请求:
>>> import requests
>>> headers = {'content-type' : 'application/json'}
>>> data ={"eventType":"AAS_PORTAL_START","data{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}
>>> url = "http://192.168.3.45:8080/api/v2/event/log?sessionKey=9ebbd0b25760557393a43064a92bae539d962103&format=xml&platformId=1"
>>> requests.post(url,params=data,headers=headers)
<Response [400]>
Run Code Online (Sandbox Code Playgroud)
对我来说一切都很好看,我不太确定我发错了什么来得到400响应.
我想做并行的http请求任务asyncio,但我发现python-requests会阻塞事件循环asyncio.我发现了aiohttp,但它无法使用http代理提供http请求服务.
所以我想知道是否有办法在借助的帮助下进行异步http请求asyncio.
我正在使用Requests库并访问网站以使用以下代码从中收集数据:
r = requests.get(url)
Run Code Online (Sandbox Code Playgroud)
我想在输入不正确的URL并返回404错误时添加错误测试.如果我故意输入无效的网址,当我这样做时:
print r
Run Code Online (Sandbox Code Playgroud)
我明白了:
<Response [404]>
Run Code Online (Sandbox Code Playgroud)
编辑:
我想知道如何测试.对象类型仍然相同.当我做r.content或者r.text,我只是得到一个自定义的404页面的HTML.
我想从以下网站获取内容.如果我使用像Firefox或Chrome这样的浏览器,我可以获得我想要的真实网站页面,但如果我使用Python请求包(或wget命令)来获取它,它将返回一个完全不同的HTML页面.我认为网站的开发者为此做了一些块,所以问题是:
如何使用python请求或命令wget伪造浏览器访问?
我非常喜欢这个requests包及其处理JSON响应的舒适方式.
不幸的是,我不明白我是否也可以处理XML响应.有没有人体验如何使用requests包处理XML响应?是否有必要包含另一个包,例如requestsXML解码?
我正在使用极好的Python Requests库.我注意到,精美的文档中有许多如何在不解释原因的情况下做某事的例子.举例来说,无论是r.text和r.content显示为实例如何获取服务器响应.但它在哪里解释了这些属性的作用?例如,我何时会选择一个而不是另一个?我看到thar 有时会r.text返回一个unicode对象,我认为非文本响应会有所不同.但所有这些记录在哪里?请注意,链接的文档确实说明:
对于非文本请求,您还可以以字节为单位访问响应正文:
但接下来它将展示文本响应的示例!我只能假设上面的引用意味着non-text responses代替non-text requests,因为非文本请求在HTTP中没有意义.
简而言之,与Python请求站点上的(优秀)教程相比,库的正确文档在哪里?
我正在使用请求模块(版本0.10.0与Python 2.5).我已经想出如何将数据提交到网站上的登录表单并检索会话密钥,但我看不到在后续请求中使用此会话密钥的明显方法.有人可以在下面的代码中填写省略号或建议另一种方法吗?
>>> import requests
>>> login_data = {'formPosted':'1', 'login_email':'me@example.com', 'password':'pw'}
>>> r = requests.post('https://localhost/login.py', login_data)
>>>
>>> r.text
u'You are being redirected <a href="profilePage?_ck=1349394964">here</a>'
>>> r.cookies
{'session_id_myapp': '127-0-0-1-825ff22a-6ed1-453b-aebc-5d3cf2987065'}
>>>
>>> r2 = requests.get('https://localhost/profile_data.json', ...)
Run Code Online (Sandbox Code Playgroud) python ×10
python-requests ×10
httprequest ×3
aiohttp ×1
asynchronous ×1
html ×1
http-request ×1
python-3.4 ×1
web-scraping ×1
wget ×1
xml ×1