我正在尝试使用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来检查特定用户是否已被邀请参加活动:
欣赏输入.
我想告诉urllib2.urlopen(或自定义开启者)使用127.0.0.1(或::1)来解析地址.但是,我不会改变我的/etc/resolv.conf.
一种可能的解决方案是使用类似dnspython查询地址和httplib构建自定义URL开启工具的工具.我更喜欢告诉urlopen使用自定义名称服务器.有什么建议?
他们没有在python文档中提到这一点.最近我正在测试一个网站只是使用urllib2.urlopen()来刷新网站以提取某些内容,我注意到有时当我更新网站时,urllib2.urlopen()似乎没有得到新添加的内容.所以我想它确实在某处缓存了东西,对吧?
我使用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) 我正在尝试获取以下网页:
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检查网页源代码时看到的结果不一致.
你能告诉我为什么会这样,以及如何改进我的代码来克服这个问题?
谢谢您的帮助.
我使用urllib2的urlopen功能,试图从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,它给出了相同的结果.
我很困难,甚至不知道在哪里寻找解决这个问题.有任何想法吗?
在这一天花了很多时间,我真的在我的智慧结束.我有一台机器"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) 我的应用程序依赖于:
它在开发和生产环境中运行完美,但在使用硒进行测试时则无法运行.
使用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) 我已经读过,这样打开的文件会在离开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)
我正在尝试为我的项目打开一个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 ×10
urlopen ×10
urllib2 ×5
urllib ×3
django ×1
dns ×1
dnspython ×1
https ×1
importerror ×1
selenium ×1
setsockopt ×1
sockets ×1
ssl ×1
weasyprint ×1