标签: urlopen

如何使用urllib2.urlopen在没有数据参数的情况下发出POST请求

我正在尝试使用urllib2.urlopen通过Facebook Graph API执行GET和POST请求.我从这里注意到:https://stackoverflow.com/questions/2690723/facebook-graph-api-and-django 我可以很容易地执行GET请求.

从这里:如何使用django发送POST请求?并且Python文档http://docs.python.org/library/urllib2.html似乎需要数据参数来执行POST请求.

但是看看Facebook的API:http://developers.facebook.com/docs/reference/api/event/#invited它说

您可以通过向/ EVENT_ID/invite/USER_ID发出HTTP POST来邀请用户参加活动

我不知道如何用urlopen做到这一点,因为直接打开这个url只会检查用户是否被邀请,如API页面所述:

您可以通过向/ EVENT_ID/invite/USER_ID发出HTTP GET来检查特定用户是否已被邀请参加活动:

欣赏输入.

python urllib2 urlopen facebook-graph-api

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

告诉urllib2使用自定义DNS

我想告诉urllib2.urlopen(或自定义开启者)使用127.0.0.1(或::1)来解析地址.但是,我不会改变我的/etc/resolv.conf.

一种可能的解决方案是使用类似dnspython查询地址和httplib构建自定义URL开启工具的工具.我更喜欢告诉urlopen使用自定义名称服务器.有什么建议?

python dns dnspython urllib2 urlopen

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

urllib2.urlopen()缓存内容吗?

他们没有在python文档中提到这一点.最近我正在测试一个网站只是使用urllib2.urlopen()来刷新网站以提取某些内容,我注意到有时当我更新网站时,urllib2.urlopen()似乎没有得到新添加的内容.所以我想它确实在某处缓存了东西,对吧?

python urllib2 urlopen

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

使用urllib2加载URL时如何设置TCP_NODELAY标志?

我使用urllib2加载网页,我的代码是:

httpRequest = urllib2.Request("http:/www....com")
pageContent = urllib2.urlopen(httpRequest)
pageContent.readline()
Run Code Online (Sandbox Code Playgroud)

如何获取要设置的套接字属性TCP_NODELAY

在普通的套接字我会使用函数:

socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
Run Code Online (Sandbox Code Playgroud)

python sockets urllib2 setsockopt urlopen

13
推荐指数
2
解决办法
8667
查看次数

为什么urllib.urlopen.read()与源代码不对应?

我正在尝试获取以下网页:

import urllib
urllib.urlopen("http://www.gallimard-jeunesse.fr/searchjeunesse/advanced/(order)/author?catalog[0]=1&SearchAction=1").read()
Run Code Online (Sandbox Code Playgroud)

结果与我在使用Google Chrome检查网页源代码时看到的结果不一致.

你能告诉我为什么会这样,以及如何改进我的代码来克服这个问题?

谢谢您的帮助.

python urllib urlopen

12
推荐指数
3
解决办法
3098
查看次数

Urllib在某些网站上打破了urlopen(例如StackApps api):返回垃圾结果

我使用urllib2urlopen功能,试图从StackOverflow的API获取JSON结果.

我正在使用的代码:

>>> import urllib2
>>> conn = urllib2.urlopen("http://api.stackoverflow.com/0.8/users/")
>>> conn.readline()
Run Code Online (Sandbox Code Playgroud)

结果我得到了:

'\x1f\x8b\x08\x00\x00\x00\x00\x00\x04\x00\xed\xbd\x07`\x1cI\x96%&/m\xca{\x7fJ\...
Run Code Online (Sandbox Code Playgroud)

我对urllib相当新,但这似乎不是我应该得到的结果.我已经在其他地方尝试过了,我得到了我的期望(与使用浏览器访问地址一样:JSON对象).

urlopen在其他网站上使用(例如" http://google.com ")工作正常,并给我实际的HTML.我也试过使用urllib,它给出了相同的结果.

我很困难,甚至不知道在哪里寻找解决这个问题.有任何想法吗?

python urllib urllib2 urlopen

10
推荐指数
1
解决办法
985
查看次数

Urllib.urlopen()在一台机器上使用Python 2.6.6在SSLv3 URL上工作,但在另一台机器上不在2.6.7/2.7.2上工作

在这一天花了很多时间,我真的在我的智慧结束.我有一台机器"A"安装了Python 2.6.6/2.7.2,另一台机器"B"安装了Python 2.6.7/2.7.2.

在机器A上,我可以urllib2.urlopen('https://fed.princeton.edu')使用Python 2.6.6 获得SSLv3加密的网站,但不能使用2.7.2.

在机器B上,我无法使用Python版本获得该网站.

由于无法得到,我的意思是我得到错误:

Traceback:
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django_cas-2.0.3-py2.7.egg/django_cas/views.py" in login
  78.         user = auth.authenticate(ticket=ticket, service=service)
File "/usr/local/lib/python2.7/dist-packages/Django-1.3.1-py2.7.egg/django/contrib/auth/__init__.py" in authenticate
  55.             user = backend.authenticate(**credentials)
File "/usr/local/lib/python2.7/dist-packages/django_cas-2.0.3-py2.7.egg/django_cas/backends.py" in authenticate
  72.         username = _verify(ticket, service)
File "/usr/local/lib/python2.7/dist-packages/django_cas-2.0.3-py2.7.egg/django_cas/backends.py" in _verify_cas2
  46.     page = urlopen(url)
File "/usr/lib/python2.7/urllib.py" in urlopen
  84.         return opener.open(url)
File "/usr/lib/python2.7/urllib.py" in open
  205.                 return getattr(self, name)(url)
File "/usr/lib/python2.7/urllib.py" in open_https
  435.             h.endheaders(data)
File "/usr/lib/python2.7/httplib.py" …
Run Code Online (Sandbox Code Playgroud)

python ssl https urllib urlopen

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

Python selenium测试卡在urlopen中

我的应用程序依赖于:

  • Python 3
  • Django 1.8
  • Weasyprint

它在开发和生产环境中运行完美,但在使用硒进行测试时则无法运行.

使用weasyprint,我从HTML创建一个PDF,这个库使用urllib下载CSS(例如http:// localhost:8081/static/lib/bootstrap/css/bootstrap.min.css),但它挂起(没有错误,只是打开这些时,卡住了.

如果我在挂起时直接在浏览器中输入此URL,则会显示CSS.

使用的命令:

./manage.py test tests.test_account.HomeNewVisitorTest
Run Code Online (Sandbox Code Playgroud)

测试的相关部分:

from selenium import webdriver

class HomeNewVisitorTest(StaticLiveServerTestCase):
    def setUp(self):
        if TEST_ENV_FIREFOX:
            self.driver = webdriver.Firefox()
        else:
            self.driver = webdriver.PhantomJS()
        self.driver.set_window_size(1440, 900)

    def tearDown(self):
        try:
            path = 'worksites/' + self.worksite_name.lower()
            os.rmdir(settings.MEDIA_ROOT + path)
        except FileNotFoundError:
            pass
        super().tearDown()

    def test(self):
        d = self.driver
        d.get(self.get_full_url('home'))
        d.find_element_by_css_selector('.btn-success[type=submit]').click()
Run Code Online (Sandbox Code Playgroud)

在我看来:

    # Generate PDF for contact directory
    template = get_template("pdf/annuaire.html")
    context = {"worksite": worksite}
    html = template.render(RequestContext(self.request, context))
    base_url = self.request.build_absolute_uri("/") …
Run Code Online (Sandbox Code Playgroud)

python django selenium urlopen weasyprint

10
推荐指数
1
解决办法
800
查看次数

使用和关闭Python中的文件

我已经读过,这样打开的文件会在离开with块时自动关闭:

with open("x.txt") as f:
    data = f.read()
    do something with data
Run Code Online (Sandbox Code Playgroud)

但是当从网上开放时,我需要这个:

from contextlib import closing
from urllib.request import urlopen

with closing(urlopen('http://www.python.org')) as page:
    for line in page:
        print(line)
Run Code Online (Sandbox Code Playgroud)

为什么和有什么区别?(我使用的是Python3)

python with-statement contextmanager urlopen

9
推荐指数
2
解决办法
4787
查看次数

ImportError:无法导入名称urlopen

我正在尝试为我的项目打开一个URL,这是我的代码:

from urllib2 import urlopen
page = urlopen("https://docs.python.org/3/howto/urllib2.html")
contents = page.read()
Run Code Online (Sandbox Code Playgroud)

这只是一个简单的演示代码,然而,当我运行代码时,我收到以下错误"ImportError:无法导入名称urlopen"

我尝试在CMD中输入"pip install urllib2"并得到以下错误"无法找到满足要求的版本urllib2 ...找不到urllib2的匹配分发"

我如何解决这个错误,因为我使用python 2.7.12而不是python3

python python-import importerror urlopen

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