পাইথন সহ আমি কোনও ইউআরএলের বিষয়বস্তু কীভাবে পড়তে পারি?


93

নিম্নলিখিতটি কাজ করে যখন আমি এটি ব্রাউজারে পেস্ট করি:

http://www.somesite.com/details.pl?urn=2344

কিন্তু যখন আমি পাইথনের সাথে ইউআরএল পড়ার চেষ্টা করি তখন কিছুই ঘটে না:

 link = 'http://www.somesite.com/details.pl?urn=2344'
 f = urllib.urlopen(link)           
 myfile = f.readline()  
 print myfile

আমার কি ইউআরএল এনকোড করা দরকার, বা এমন কিছু আছে যা আমি দেখছি না?

উত্তর:


158

আপনার প্রশ্নের উত্তর দিতে:

import urllib

link = "http://www.somesite.com/details.pl?urn=2344"
f = urllib.urlopen(link)
myfile = f.read()
print(myfile)

আপনার দরকার read(), নাreadline()

সম্পাদনা (2018-06-25): পাইথন 3 থেকে, উত্তরাধিকার urllib.urlopen()দ্বারা প্রতিস্থাপন করা হয়েছে urllib.request.urlopen()( বিশদগুলির জন্য https://docs.python.org/3/library/urllib.request.html#urllib.request.urlopen এর নোট দেখুন) ।

আপনি যদি পাইথন 3 ব্যবহার করেন তবে মার্টিন থোমার উত্তর বা উত্তর এই প্রশ্নের মধ্যে দেখুন: https://stackoverflow.com/a/28040508/158111 (পাইথন 2/3 কম্প্যাট) https://stackoverflow.com/a/45886824 / 158111 (পাইথন 3)

অথবা, কেবল এই লাইব্রেরিটি এখানে পান: http://docs.python-requests.org/en/latest/ এবং গুরুত্ব সহকারে এটি ব্যবহার করুন :)

import requests

link = "http://www.somesite.com/details.pl?urn=2344"
f = requests.get(link)
print(f.text)

@KiranSubbaraman এটা API গুলি থেকে কোড কাঠামো সত্যিই একটি ভাল প্রকল্পের আছে,
woozyking

আমি প্রোগ্রামারকে নতুন ব্র্যান্ডের requestsমডিউল ব্যবহার করতে উত্সাহিত করি , এটি আরও বেশি পাইথোনিক কোডে ব্যবহার করে encourage
হান্স জিমেরম্যান

4
পাইথন Traceback (most recent call last): File "/home/lars/parser.py", line 9, in <module> f = urllib.urlopen(link) AttributeError: module 'urllib' has no attribute 'urlopen'৩.৩.২- তে আমি নিম্নলিখিত ত্রুটিটি পাচ্ছি: পাইথন 3.5 তে কোনও ইউরলোপেন ফাংশন নেই বলে মনে হচ্ছে। এর নামকরণ হয়েছে? সম্পাদনা: নীচে উত্তরে স্নিপেট from urllib.request import urlopen
সলভ করে

পাইথন 3-এ @ ব্যবহারকারী 7185318 হ্যাঁ urlibপ্যাকেজে কিছু রিফ্যাক্টরিং এবং এপিআই পরিবর্তন হয়েছে। আমি পাইথন ২-এ জোর দেওয়ার জন্য উত্তরটি আপডেট করব
woozyking

যদি প্রদত্ত লিঙ্কটি ব্যবহারকারীর নাম এবং পাসওয়ার্ড জিজ্ঞাসা করে? তাহলে কীভাবে কোডটি পরিবর্তন করা যায়?
ডাঃ এসেন

28

জন্য python3ব্যবহারকারীদের সময় বাঁচাতে, নিম্নলিখিত কোড ব্যবহার করার

from urllib.request import urlopen

link = "https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html"

f = urlopen(link)
myfile = f.read()
print(myfile)

আমি জানি ত্রুটির জন্য বিভিন্ন থ্রেড রয়েছে: Name Error: urlopen is not definedতবে ভেবেছিল এটি হয়ত সময় সাশ্রয় করতে পারে।


পাইথন 3 ব্যবহার করে ইউআরএল থেকে ডেটা পড়ার এটি সর্বোত্তম উপায় নয় কারণ এটি 'উইথ' স্টেটমেন্টের সুবিধাগুলি বাদ দেয়। আমার উত্তর দেখুন: stackoverflow.com/a/56295038/908316
জেয়ার্ড

না এটি লুপ করার সময় কাজ করবে না। শুধুমাত্র একটি কল। আপনি আমাকে জিজ্ঞাসা করলে যা স্তন্যপান
lone_coder

11

পাইথন ২ এক্স এবং পাইথন ৩ এক্স এর সাথে কাজ করে একটি সমাধান পাইথন 2 এবং 3 সামঞ্জস্যের লাইব্রেরি ব্যবহার করে six:

from six.moves.urllib.request import urlopen
link = "http://www.somesite.com/details.pl?urn=2344"
response = urlopen(link)
content = response.read()
print(content)

10

পাইথন 3 (এই পোস্টের সময়ে সর্বশেষ সংস্করণে পরীক্ষিত) এর জন্য এই উত্তরগুলির কোনওটিই খুব ভাল।

এইভাবে আপনি এটি ...

import urllib.request

try:
   with urllib.request.urlopen('http://www.python.org/') as f:
      print(f.read().decode('utf-8'))
except urllib.error.URLError as e:
   print(e.reason)

উপরোক্ত সামগ্রীগুলি 'utf-8' ফেরত দেওয়ার জন্য। পাইথনটি "যথাযথ এনকোডিং অনুমান করতে" চাইলে .decode ('utf-8') সরান।

ডকুমেন্টেশন: https://docs.python.org/3/library/urllib.request.html#module-urllib.request


ধন্যবাদ, মূল কোডটি পাইথন 2 এর জন্য লেখা হয়েছিল, তবে এখানে আপনার অবদান উল্লেখ করা হয়েছে।
হেলেন নীলি

2

আমরা নীচের মতো ওয়েবসাইট এইচটিএমএল বিষয়বস্তু পড়তে পারি:

from urllib.request import urlopen
response = urlopen('http://google.com/')
html = response.read()
print(html)

4
এটি @innm
PeyM87

1
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Works on python 3 and python 2.
# when server knows where the request is coming from.

import sys

if sys.version_info[0] == 3:
    from urllib.request import urlopen
else:
    from urllib import urlopen
with urlopen('https://www.facebook.com/') as \
    url:
    data = url.read()

print data

# When the server does not know where the request is coming from.
# Works on python 3.

import urllib.request

user_agent = \
    'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'

url = 'https://www.facebook.com/'
headers = {'User-Agent': user_agent}

request = urllib.request.Request(url, None, headers)
response = urllib.request.urlopen(request)
data = response.read()
print data

0

URL টি একটি স্ট্রিং হওয়া উচিত:

import urllib

link = "http://www.somesite.com/details.pl?urn=2344"
f = urllib.urlopen(link)           
myfile = f.readline()  
print myfile

11
'এবং "উভয়ই পাইথনে স্ট্রিং রয়েছে
লিও

0

আমি নিম্নলিখিত কোড ব্যবহার করেছি:

import urllib

def read_text():
      quotes = urllib.urlopen("https://s3.amazonaws.com/udacity-hosted-downloads/ud036/movie_quotes.txt")
      contents_file = quotes.read()
      print contents_file

read_text()

0
# retrieving data from url
# only for python 3

import urllib.request

def main():
  url = "http://docs.python.org"

# retrieving data from URL
  webUrl = urllib.request.urlopen(url)
  print("Result code: " + str(webUrl.getcode()))

# print data from URL 
  print("Returned data: -----------------")
  data = webUrl.read().decode("utf-8")
  print(data)

if __name__ == "__main__":
  main()

0
from urllib.request import urlopen

# if has Chinese, apply decode()
html = urlopen("https://blog.csdn.net/qq_39591494/article/details/83934260").read().decode('utf-8')
print(html)

এই কোড স্নিপেটের জন্য আপনাকে ধন্যবাদ, যা কিছু সীমিত, তাত্ক্ষণিক সহায়তা সরবরাহ করতে পারে। একটি সঠিক ব্যাখ্যা কেন এটি সমস্যার একটি ভাল সমাধান এবং এটি ভবিষ্যতে পাঠকদের আরও অন্যান্য অনুরূপ প্রশ্নের সাথে আরও দরকারী করে তুলে ধরে তার দীর্ঘমেয়াদী মানকে ব্যাপকভাবে উন্নত করবে। আপনার অনুমানগুলি সহ কিছু ব্যাখ্যা যুক্ত করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন।
কোডিং

0

আপনি কোনও ওয়েবসাইটে ডেটা পড়তে requestsএবং beautifulsoupগ্রন্থাগারগুলি ব্যবহার করতে পারেন । কেবলমাত্র এই দুটি গ্রন্থাগার ইনস্টল করুন এবং নিম্নলিখিত কোডটি টাইপ করুন।

import requests
import bs4
help(requests)
help(bs4)

আপনি লাইব্রেরি সম্পর্কে আপনার প্রয়োজনীয় সমস্ত তথ্য পাবেন।


helpপ্রদত্ত মডিউল / শ্রেণি / ফাংশনের ডকুমেন্টেশন দেখতে ব্যবহৃত হয়। আমি মনে করি যে প্রশ্নটি প্রতিক্রিয়াটির সামগ্রী দেখার জন্য একটি উপায় চায়
Panagiotis Simakis

ধন্যবাদ, তবে এটি সত্যিই পুরানো প্রশ্ন, এবং ইতিমধ্যে উত্তর দেওয়া হয়েছে। ধন্যবাদ এবং স্ট্যাকওভারফ্লোতে স্বাগতম।
হেলেন নীলি 16'20
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.