标签: urllib2

来自HTTP的Unescape Python字符串

我有一个来自HTTP标头的字符串,但它已被转义..我可以使用什么功能来解决它​​?

myemail%40gmail.com -> myemail@gmail.com
Run Code Online (Sandbox Code Playgroud)

urllib.unquote()是否可行?

python mod-wsgi header http urllib2

17
推荐指数
1
解决办法
2万
查看次数

使用urllib2的Python表单POST(还有关于保存/使用cookie的问题)

我正在尝试编写一个函数来发布表单数据并将返回的cookie信息保存在文件中,以便下次访问页面时,cookie信息将被发送到服务器(即正常的浏览器行为).

我使用curlib在C++中相对容易地编写了这个,但是花了将近一整天的时间尝试使用urllib2在Python中编写它 - 但仍然没有成功.

这是我到目前为止:

import urllib, urllib2
import logging

# the path and filename to save your cookies in
COOKIEFILE = 'cookies.lwp'

cj = None
ClientCookie = None
cookielib = None


logger = logging.getLogger(__name__)

# Let's see if cookielib is available
try:
    import cookielib
except ImportError:
    logger.debug('importing cookielib failed. Trying ClientCookie')
    try:
        import ClientCookie
    except ImportError:
        logger.debug('ClientCookie isn\'t available either')
        urlopen = urllib2.urlopen
        Request = urllib2.Request
    else:
        logger.debug('imported ClientCookie succesfully')
        urlopen = ClientCookie.urlopen
        Request = ClientCookie.Request
        cj = ClientCookie.LWPCookieJar() …
Run Code Online (Sandbox Code Playgroud)

python cookies urllib2

17
推荐指数
1
解决办法
2万
查看次数

Python urllib超过TOR?

示例代码:

#!/usr/bin/python
import socks
import socket
import urllib2

socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS4, "127.0.0.1", 9050, True)
socket.socket = socks.socksocket

print urllib2.urlopen("http://almien.co.uk/m/tools/net/ip/").read()
Run Code Online (Sandbox Code Playgroud)

TOR在端口9050上运行SOCKS代理(默认值).该请求通过TOR,在我自己以外的IP地址上显示.但是,TOR控制台会发出警告:

"2月28日22:44:26.233 [警告]你的应用程序(使用socks4到端口80)只给Tor一个IP地址.做DNS解析的应用程序本身可能泄漏信息.考虑使用Socks4A(例如通过privoxy或socat).有关详细信息,请参阅 https://wiki.torproject.org/TheOnionRouter/TorFAQ#SOCKSAndDNS."

即DNS查找不通过代理.但这就是setdefaultproxy应该做的第4个参数,对吧?

来自http://socksipy.sourceforge.net/readme.txt:

setproxy(proxytype,addr [,port [,rdns [,username [,password]]]])

rdns - 这是一个布尔标志,而不是修改DNS解析的行为.如果设置为True,则将在服务器上远程执行DNS解析.

选择PROXY_TYPE_SOCKS4和PROXY_TYPE_SOCKS5时效果相同.

它不能是本地DNS缓存(如果urllib2甚至支持它),因为当我将URL更改为此计算机以前从未访问过的域时会发生这种情况.

python urllib2 tor socks

17
推荐指数
2
解决办法
2万
查看次数

Python - 使用HTTPS的urllib2异步/线程请求示例

我有一点时间使用Python的urllib2来获取异步/线程HTTPS请求.

有没有人有一个基本的例子来实现urllib2.Request,urllib2.build_opener和urllib2.HTTPSHandler的子类?

谢谢!

python multithreading urllib2

17
推荐指数
3
解决办法
2万
查看次数

为什么Python的urllib2.urlopen()会为成功的状态代码引发HTTPError?

根据urllib2文档,

由于默认处理程序处理重定向(300范围内的代码),并且100-299范围内的代码表示成功,因此通常只能看到400-599范围内的错误代码.

然而,以下代码

request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
Run Code Online (Sandbox Code Playgroud)

使用代码201(已创建)引发HTTPError:

ERROR    2011-08-11 20:40:17,318 __init__.py:463] HTTP Error 201: Created
Run Code Online (Sandbox Code Playgroud)

那么为什么要urllib2在这个成功的请求上抛出HTTPErrors呢?

这不是太痛苦; 我可以轻松地将代码扩展到:

try:
    request = urllib2.Request(url, data, headers)
    response = urllib2.urlopen(request)
except HTTPError, e:
    if e.code == 201:
        # success! :)
    else:
        # fail! :(
else:
    # when will this happen...?
Run Code Online (Sandbox Code Playgroud)

但这似乎不是预期的行为,基于文档和我无法找到关于这种奇怪行为的类似问题的事实.

此外,该else块应该期待什么?如果成功的状态代码都被解释为HTTPErrors,那么什么时候urllib2.urlopen()只返回一个类似于文件的正常响应对象,就像所有urllib2文档所指的那样?

python urllib2 http-status-codes

17
推荐指数
2
解决办法
7793
查看次数

如何从使用OpenID的网站请求页面?

之前已经在这里提出过这个问题.对于提问者和回答者来说,接受的答案可能是显而易见的 - 但不是对我而言.我已就上述问题发表评论以获得更多精确度,但没有回应.我还向meta Q&A索取了关于如何从他们的坟墓中提出问题的帮助,也没有得到答案.

上面问题的答案是:

从客户端的角度来看,OpenID登录与任何其他基于Web的登录非常相似.客户端没有定义的协议; 它是一个普通的Web会话,根据您的OpenID提供程序而有所不同.出于这个原因,我怀疑是否存在任何此类库.您可能需要自己编写代码.

我知道如何使用Urllib2模块登录使用Python的网站.但这还不足以让我猜测如何对OpenID进行身份验证.

我实际上是想以json格式获取我的StackOverflow收件箱,我需要登录.

有人可以提供一个简短的介绍或链接到一个很好的教程如何做到这一点?

python openid authentication urllib2

17
推荐指数
3
解决办法
3619
查看次数

如何启用请求异步模式?

对于此代码:

import sys

import gevent
from gevent import monkey

monkey.patch_all()

import requests
import urllib2

def worker(url, use_urllib2=False):
    if use_urllib2:
        content = urllib2.urlopen(url).read().lower()
    else:
        content = requests.get(url, prefetch=True).content.lower()
    title = content.split('<title>')[1].split('</title>')[0].strip()

urls = ['http://www.mail.ru']*5

def by_requests():
    jobs = [gevent.spawn(worker, url) for url in urls]
    gevent.joinall(jobs)

def by_urllib2():
    jobs = [gevent.spawn(worker, url, True) for url in urls]
    gevent.joinall(jobs)

if __name__=='__main__':
    from timeit import Timer
    t = Timer(stmt="by_requests()", setup="from __main__ import by_requests")  
    print 'by requests: %s seconds'%t.timeit(number=3)
    t = Timer(stmt="by_urllib2()", setup="from __main__ import …
Run Code Online (Sandbox Code Playgroud)

python asynchronous urllib2 gevent python-requests

17
推荐指数
3
解决办法
2万
查看次数

网页抓取 - 如何通过Angular.js访问用JavaScript呈现的内容?

我正在尝试从公共站点asx.com.au获取数据

页面http://www.asx.com.au/asx/research/company.do#!/ACB/details包含一个div类"view-content",它包含我需要的信息:

在此输入图像描述

但是当我尝试通过Python查看此页面时urllib2.urlopendiv为空:

import urllib2
from bs4 import BeautifulSoup

url = 'http://www.asx.com.au/asx/research/company.do#!/ACB/details'
page = urllib2.urlopen(url).read()
soup = BeautifulSoup(page, "html.parser")
contentDiv = soup.find("div", {"class": "view-content"})
print(contentDiv)

# the results is an empty div:
# <div class="view-content" ui-view=""></div>
Run Code Online (Sandbox Code Playgroud)

是否可以通过编程方式访问该div的内容?

编辑:根据评论,显示内容通过Angular.js.是否可以通过Python触发该内容的呈现?

python urllib2 beautifulsoup web-scraping angularjs

17
推荐指数
1
解决办法
1万
查看次数

如何使用python urllib2发送json数据进行登录

我想使用python urllib2来模拟登录操作,我使用Fiddler来捕获数据包并得到登录操作只是一个ajax请求,用户名和密码作为json数据发送,但我不知道如何使用urllib2发送json数据,帮忙......

python json urllib2

16
推荐指数
3
解决办法
3万
查看次数

Python urllib2.HTTPError:HTTP错误503:服务在有效网站上不可用

我一直在使用亚马逊的产品广告API来生成包含给定图书价格的网址.我生成的一个网址如下:

http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327

当我点击链接或粘贴地址栏上的链接时,网页加载正常.但是,当我执行以下代码时,我收到一个错误:

url = "http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327"
html_contents = urllib2.urlopen(url)
Run Code Online (Sandbox Code Playgroud)

错误是urllib2.HTTPError:HTTP错误503:服务不可用.首先,我不明白为什么我甚至会因为网页成功加载而出现此错误.

此外,我注意到的另一个奇怪的行为是,以下代码有时会做,有时不会给出指定的错误:

html_contents = urllib2.urlopen("http://www.amazon.com/gp/offer-listing/0415376327%3FSubscriptionId%3DAKIAJZY2VTI5JQ66K7QQ%26tag%3Damaztest04-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D386001%26creativeASIN%3D0415376327")
Run Code Online (Sandbox Code Playgroud)

我完全迷失了这种行为的发生方式.是否有任何修复或解决方法?我的目标是阅读网址的html内容.

编辑

我不知道为什么堆栈溢出正在改变我的代码,以便将我在上面列出的amazon链接更改为rads.stackoverflow.无论如何,忽略rads.stackoverflow链接并在引号之间使用上面的链接.

python urllib2

16
推荐指数
2
解决办法
3万
查看次数