পাইথন সেলেনিয়াম এইচটিএমএল উত্স অ্যাক্সেস করছে


98

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

আমি এরকম কিছু করতে চেয়েছিলাম:

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://example.com")
if "whatever" in html_source:
    # Do something
else:
    # Do something else

কিভাবে আমি এটি করতে পারব? আমি এইচটিএমএল উত্স অ্যাক্সেস কিভাবে জানি না।


4
শর্তের আগে নিম্নলিখিত লাইনটি লিখুন: এইচটিএমএল_সোর্স = ব্রাউজার.পেজ_সোর্স
আব্দুল মাজিদ

উত্তর:


194

আপনার page_sourceসম্পত্তিটি অ্যাক্সেস করতে হবে :

from selenium import webdriver

browser = webdriver.Firefox()
browser.get("http://example.com")

html_source = browser.page_source
if "whatever" in html_source:
    # do something
else:
    # do something else

6
এখন পর্যন্ত সেরা উত্তর! এটি করার সর্বাধিক তাত্ক্ষণিক এবং সুস্পষ্ট উপায়, আরও অনেক কমপ্যাক্ট যে অন্যটি এখনও বৈধ, বিকল্প ( find_element_by_xpath("//*").get_attribute("outerHTML")(
5agado

14
সমস্ত জাভাস্ক্রিপ্ট কার্যকর করার পরে যদি আমাদের পৃষ্ঠা উত্স পেতে হয়?
যোগেশ সেরালাথন

4
পৃষ্ঠাটি সম্পূর্ণ লোড হয়ে থাকলে কেবল কাজ করে। পৃষ্ঠাটি যদি অনির্দিষ্টকালের জন্য লোড হয় তবে এই সম্পত্তিটি কাজ করে না।
TheRookierLearner

5

সেলেনিয়াম 2 লাইব্রেরির সাথে আপনি ব্যবহার করতে পারেন get_source()

import Selenium2Library
s = Selenium2Library.Selenium2Library()
s.open_browser("localhost:7080", "firefox")
source = s.get_source()

8
আমি কি একটি বিলম্ব সেট করতে এবং সর্বশেষ উত্স পেতে পারি? জাভাস্ক্রিপ্ট ব্যবহার করে লোড করা গতিশীল সামগ্রী রয়েছে।
কোডগুরু

4

চালক.পৃষ্ঠা_স্রোত পৃষ্ঠা পৃষ্ঠা কোড পেতে আপনাকে সহায়তা করবে। পৃষ্ঠার উত্সটিতে পাঠ্য উপস্থিত রয়েছে কিনা তা আপনি পরীক্ষা করতে পারেন।

from selenium import webdriver
driver = webdriver.Firefox()
driver.get("some url")
if "your text here" in driver.page_source:
    print('Found it!')
else:
    print('Did not find it.')

আপনি যদি পৃষ্ঠার উত্সটি কোনও ভেরিয়েবলে সঞ্চয় করতে চান তবে ড্রাইভার.জেটের পরে নীচে লাইন যুক্ত করুন :

var_pgsource=driver.page_source

এবং যদি শর্তটি পরিবর্তন করুন :

if "your text here" in var_pgsource:

4
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং / বা কেন এটি সমস্যার সমাধান করে তা সম্পর্কিত অতিরিক্ত প্রসঙ্গ সরবরাহ করলে উত্তরের দীর্ঘমেয়াদী মান উন্নত হবে।
নিক 3500

2

পৃষ্ঠার উত্সটি ব্যবহার করে আপনি পুরো এইচটিএমএল কোডটি পাবেন।
সুতরাং প্রথমে কোড বা ট্যাগের ব্লকটি স্থির করুন যেখানে আপনাকে তথ্য পুনরুদ্ধার করতে বা উপাদানটি ক্লিক করতে হবে ..

options = driver.find_elements_by_name_("XXX")
for option in options:
    if option.text == "XXXXXX":
        print(option.text)
        option.click()

নাম, এক্সপথ, আইডি, লিঙ্ক এবং সিএসএস পাথের সাহায্যে আপনি উপাদানগুলি খুঁজে পেতে পারেন।


1

URL টি urllib ব্যবহার করার বিষয়ে আপনার প্রশ্নের উত্তর পেতে , কেবল এই জাভাস্ক্রিপ্ট কোডটি সম্পাদন করুন:

url = browser.execute_script("return window.location;")

1

আপনি কেবল WebDriverঅবজেক্টটি ব্যবহার করতে পারেন , এবং এর @propertyক্ষেত্রের মাধ্যমে পৃষ্ঠা উত্স কোডটিতে অ্যাক্সেস করতে পারেন page_source...

এই কোড স্নিপেট চেষ্টা করুন :-)

from selenium import webdriver
driver = webdriver.Firefox('path/to/executable')
driver.get('https://some-domain.com')
source = driver.page_source
if 'stuff' in source:
    print('found...')
else:
    print('not in source...')

এই উত্তরটি কীভাবে স্ট্যাকওভারফ্লো . com/a/7866938/2231972 থেকে আলাদা ?
রোমান কোনোভাল

1
from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Chrome()
html_source_code = driver.execute_script("return document.body.innerHTML;")
html_soup: BeautifulSoup = BeautifulSoup(html_source_code, 'html.parser')

এখন আপনি ডেটা উত্তোলনের জন্য বিউটিউসসুপ ফাংশন প্রয়োগ করতে পারেন ...


-6

আমি urlib দিয়ে উত্সটি পাওয়ার পরামর্শ দিয়েছি এবং, আপনি যদি বিশ্লেষণ করতে যাচ্ছেন তবে বিউটিফুল স্যুপ জাতীয় কিছু ব্যবহার করুন ।

import urllib

url = urllib.urlopen("http://example.com") # Open the URL.
content = url.readlines() # Read the source and save it to a variable.

ঠিক আছে তাহলে আপনি কি জানেন যে আমি কীভাবে সেলেনিয়ামের মধ্যে URL টি পেতে পারি? আমি ইউআরএলটি একটি ভেরিয়েবলে সঞ্চয় করতে চাই যাতে আমি এটি urllib দিয়ে অ্যাক্সেস করতে পারি।
ব্যবহারকারী 1008791

@ ব্যবহারকারী 1008791 এটি কি বিবেচনা করে? আপনি স্পষ্টতই কাঁচা_পিন্ড ব্যবহার করে ব্যবহারকারীকে এটিকে টাইপ করতে দিচ্ছেন, কেবল একইভাবে করুন তবে ইউরিলিব দিয়ে।
গ্রিফিন

এটি কেবল একটি সহজ উদাহরণ তৈরি করার জন্য ছিল, ইউআরএল অনেকগুলি পরিবর্তন হবে।
ব্যবহারকারী 1008791

8
সেলেনিয়াম এমন অনেকগুলি কাজ করে যা urllib দেয় না (যেমন জাভাস্ক্রিপ্টের প্রয়োগ) execution
এমপেনকোভ

এখানে urlib ব্যবহার করা অর্থহীন, কেন? অটোমেটেড টেস্টারের এটি সঠিক আছে, এটি এইচটিএমএল উত্সের মাধ্যমে স্ক্যান করার জন্য আমি যা করি তা নিশ্চিত করার জন্য যে আমরা উন্নয়ন পরিবেশের কোডটি ধাক্কা দিচ্ছি না।
ডেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.