I am trying to get onto a website and download information using python. I know the downloading part of the code works.
However, the website requires authentication to get onto it - I am a member and I have a valid username and password.
I did some research and the following code should work - but it doesn't.
What am I missing?
Here is the code:
import urllib2
url = 'https://sample-website.com/'
username = '' #I've tried with leaving this empty and with putting in a valid username
password = '' # same as above
p = urllib2.HTTPPasswordMgrWithDefaultRealm()
p.add_password(None, url, username, password)
handler = urllib2.HTTPBasicAuthHandler(p)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
page = urllib2.urlopen(url).read()
The error I get is this:
Traceback (most recent call last):
File "C:\Python27\smth_rand.py", line 14, in <module>
page = urllib2.urlopen(url).read()
File "C:\Python27\lib\urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 401: Unauthorized
Ideally my code would prompt for the user to enter his/her username and password but I'm not sure how to code that part either.
Thanks
So you need both urllib and urllib2 to do this. The example code would look like
import urllib, urllib2
import webbrowser
opener = urllib2.build_opener()
username = ''
password = ''
values = {
'username': 'example_username',
'password': 'example_password',
}
params = urllib.urlencode(values)
response = opener.open("https://sample-website.com/",params)
response.read()
your response.read() would give you w/e information you want to get out of it. You can look up all the specific methods for more in depth explanation.
Related
For example, i wrote a simple echo-bot, but GetFullChannel is not working.
from pyrogram import Client, filters, enums
from pyrogram.raw import functions, types
app = Client(username, api_id, api_hash)
#app.on_message(filters.text)
async def echo(client, message):
if message.text == "test":
r = await app.invoke(functions.channels.GetFullChannel(channel=-100********21))
print(r)
My code failed and return this trace:
Traceback (most recent call last):
File "/home/******/.local/lib/python3.9/site-packages/pyrogram/dispatcher.py", line 240, in handler_worker
await handler.callback(self.client, *args)
File "**************.py", line 84, in echo
ret = await app.invoke(functions.channels.GetFullChannel(channel=-100********21))
File "/home/*****/.local/lib/python3.9/site-packages/pyrogram/methods/advanced/invoke.py", line 77, in invoke
r = await self.session.invoke(
File "/home/*****/.local/lib/python3.9/site-packages/pyrogram/session/session.py", line 361, in invoke
return await self.send(query, timeout=timeout)
File "/home/******/.local/lib/python3.9/site-packages/pyrogram/session/session.py", line 290, in send
message = self.msg_factory(data)
File "/home/*****/.local/lib/python3.9/site-packages/pyrogram/session/internals/msg_factory.py", line 37, in __call__
len(body)
File "/home/*****/.local/lib/python3.9/site-packages/pyrogram/raw/core/tl_object.py", line 79, in __len__
return len(self.write())
File "/home/******/.local/lib/python3.9/site-packages/pyrogram/raw/functions/channels/get_full_channel.py", line 69, in write
b.write(self.channel.write())
AttributeError: 'int' object has no attribute 'write'
The author of the Pyrogram framework says that there is no error in the libraries themselves, it is in my implementation.
Can you tell me what is wrong in my code?
Am I using the raw function incorrectly?
you should give InputChannel not peer id of it
Test :
channel = await app.resolve_peer(-100********21)
r = await app.invoke(functions.channels.GetFullChannel(channel=channel ))
I am using python Jira package and trying to create Jira issue:
from jira import JIRA
jiraOptions = {'server': "http://jira.xxx.com"}
jira = JIRA(options = jiraOptions, basic_auth=(
"xxx", "xxx"))
def create_new_issue(project, summary, description, issuetype, username):
issue_dict = {
'project': {'key': project},
'summary': summary,
'description': description,
'issuetype': {'name': issuetype},
'reporter': {'name': username}
}
new_issue = jira.create_issue(fields=issue_dict)
create_new_issue("p1", "test", "teseset", "Bug", "xxxx")
I get 405 error which I can't figure out where I got wrong:
Traceback (most recent call last):
File ".\jiraUtil.py", line 97, in <module>
create_new_issue("p1", "test", "teseset", "Bug", "xxxx")
File ".\jiraUtil.py", line 58, in create_new_issue
new_issue = jira.create_issue(fields=issue_dict)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\jira\client.py", line 1473, in create_issue
r = self._session.post(url, data=json.dumps(data))
File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\jira\resilientsession.py", line 198, in post
return self.__verb("POST", str(url), data=data, json=json, **kwargs)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\jira\resilientsession.py", line 189, in __verb
raise_on_error(response, verb=verb, **kwargs)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python38\lib\site-packages\jira\resilientsession.py", line 64, in raise_on_error
raise JIRAError(
jira.exceptions.JIRAError: JiraError HTTP 405 url: https://jira.xxx.com/rest/api/2/issue
At a guess, "xxxx" user doesn't exist in your Jira Cloud instance, try changing it to "-1" which is unassigned.
I ran into some issues myself doing this, so I built this project - https://github.com/dren79/JiraScripting_public let me know if it helps :)
Here is my code on the bottom is the ERROR:
This is my config file:
[MQTT]
userMQTT = /
passwdMQTT = /
hostMQTT = broker.hivemq.com
poerMQTT = 1883
Above is mine config file where i used public broker. And now the rest of the code:
import configparser
from time import localtime, strftime
import json
import paho.mqtt.client as mqtt
config = configparser.ConfigParser()
config.read('/home/pi/bin/py.conf') # Broker connection config.
requestTopic = 'services/timeservice/request/+' # Request comes in
here. Note wildcard.
responseTopic = 'services/timeservice/response/' # Response goes
here. Request ID will be appended later
def onConnect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
def onMessage(client, userdata, message):
requestTopic = message.topic
requestID = requestTopic.split('/')[3] # obtain requestID as last
field from the topic
print("Received a time request on topic " + requestTopic + ".")
lTime = strftime('%H:%M:%S', localtime())
client.publish((responseTopic + requestID), payload=lTime, qos=0,
retain=False)
def onDisconnect(client, userdata, message):
print("Disconnected from the broker.")
# Create MQTT client instance
mqttc = mqtt.Client(client_id='raspberrypi', clean_session=True)
mqttc.on_connect = onConnect
mqttc.on_message = onMessage
mqttc.on_disconnect = onDisconnect
# Connect to the broker
mqttc.username_pw_set(config['MQTT']['userMQTT'], password=config['MQTT']
['passwdMQTT'])
BUT after i type:
mqttc.connect(config['MQTT']['hostMQTT'], port=int(config['MQTT']
['portMQTT']), keepalive=60, bind_address="")
I get an ERROR:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line
768, in connect
return self.reconnect()
File "/usr/local/lib/python3.5/dist-packages/paho/mqtt/client.py", line
895, in reconnect
sock = socket.create_connection((self._host, self._port), source_address=
(self._bind_address, 0))
File "/usr/lib/python3.5/socket.py", line 694, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/usr/lib/python3.5/socket.py", line 733, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
I tried putting an address in bind_address="" but i keep getting the same ERROR. I tried putting bind_address="0.0.0.0" or my local address.
Your config file contains:
poerMQTT = 1883
Where as your code is accessing:
portMQTT
i'm quite desperate...can't use suds in my code...I try this
#!/usr/bin/python2
import suds
url = "http://scsadx02:8080/lrs/webconnect/vpsx?trid=vpsx"
client = suds.client.Client(url)
Server = client.factory.create("ns0:string")
Serverin = client.factory.create("ns0:string")
UserID = client.factory.create("ns0:string")
Password = client.factory.create("ns0:string")
NewPassword = client.factory.create("ns0:string")
Server.value = 'SPLVSVK2'
Serverin.value = 'SPLVPSK2'
UserID.value = 'serviceudp'
Password.value = 'dpuecivres'
NewPassword.value = ''
#method I have to call
#Suds ( https://fedorahosted.org/suds/ ) version: 0.4 GA build: R699-20100913
#
#Service ( VPSXService ) tns="http://www.lrs.com"
# Prefixes (2)
# ns0 = "http://schemas.xmlsoap.org/soap/encoding/"
# ns1 = "http://www.lrs.com"
# Ports (1):
# (VPSXPort)
# Methods (95):
# Logoff(xs:string SessID, )
# Logon(xs:string Server, xs:string UserID, xs:string Password, xs:string NewPassword, )
client.service.Logon(Server, UserID, Password, NewPassword)
but I obtain this error...
[davide#archy PYTHON]$ ./testina.py
Traceback (most recent call last):
File "./testina.py", line 31, in <module>
client.service.Logon(Server, UserID, Password, NewPassword)
File "/usr/lib/python2.7/site-packages/suds/client.py", line 542, in __call__
return client.invoke(args, kwargs)
File "/usr/lib/python2.7/site-packages/suds/client.py", line 602, in invoke
result = self.send(soapenv)
File "/usr/lib/python2.7/site-packages/suds/client.py", line 637, in send
reply = transport.send(request)
File "/usr/lib/python2.7/site-packages/suds/transport/https.py", line 64, in send
return HttpTransport.send(self, request)
File "/usr/lib/python2.7/site-packages/suds/transport/http.py", line 77, in send
fp = self.u2open(u2request)
File "/usr/lib/python2.7/site-packages/suds/transport/http.py", line 118, in u2open
return url.open(u2request, timeout=tm)
File "/usr/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1214, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1184, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno -2] Name or service not known>
How I can solve???
Try
C:\Python27>python -c "import urllib2; print urllib2.urlopen('http://scsadx02:8080/lrs/webconnect/vpsx?trid=vpsx').read()"
and import os; os.environ['http_proxy']='' before importing the other modules.
Error page shows the following:
Traceback (most recent call last):
File "/Library/Python/2.6/site-packages/django/core/servers/basehttp.py", line 283, in run
self.result = application(self.environ, self.start_response)
File "/Library/Python/2.6/site-packages/django/core/handlers/wsgi.py", line 273, in call
response = self.get_response(request)
File "/Library/Python/2.6/site-packages/django/core/handlers/base.py", line 153, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "/Library/Python/2.6/site-packages/django/core/handlers/base.py", line 218, in handle_uncaught_exception
return callback(request, **param_dict)
File "/Library/Python/2.6/site-packages/django/utils/decorators.py", line 93, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "/Library/Python/2.6/site-packages/django/views/defaults.py", line 30, in server_error
t = loader.get_template(template_name) # You need to create a 500.html template.
File "/Library/Python/2.6/site-packages/django/template/loader.py", line 157, in get_template
template, origin = find_template(template_name)
File "/Library/Python/2.6/site-packages/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: 500.html
Check your Template_Loaders in settings.py. It should look like this to automatically find the default admin templates. The app_directories.Loader is important here.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)