اذهب إلى المحتوى
  • 0

خطأ Unable to extract the email input field عند استخراج حقل البريد الإلكتروني من صفحة ويب في برنامج بايثون باستخدام BeautifulSoup

Abdullah Mtiri

السؤال

مرحبا !

 

احتاج إلى مساعدة من فضلكم

قمت بتصميم كود بايثون عبر الذكاء الإصطناعي

الكود جيد ولا توجد به اي مشكله

كل مافي الامر عندما اقوم بتشغيل الكود

يقول لي "Unable to extract the email input field"

علماً ان الصفحه الموجه لها لايوجد بها الا مدخل واحد وهو الـ email ماهو الحل ؟

 

هل استخرج الحقل مباشرة من الرابط

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
بتاريخ 9 دقائق مضت قال Mustafa Suleiman:

أين الكود وما هي المكتبة التي تستخدمها هل تستخدم BeautifulSoup؟

 

نعم استخدم "BeautifulSoup"

 

هذه هو الكود :

 

import requests
from bs4 import BeautifulSoup

# Function to check if the email is registered on Instagram
def check_email(email):
    url = "https://www.instagram.com/accounts/password/reset/?source=fxcal"

    try:
        # Sending a GET request to the URL
        response = requests.get(url)

        # Parsing the HTML content using BeautifulSoup
        soup = BeautifulSoup(response.text, "html.parser")

        # Extracting the input field where the email is entered
        email_input = soup.find("input", {"name": "email"})

        # Checking if the email input field exists
        if email_input:
            # Checking if the value of the email input field matches the given email
            if email_input.get("value") == email:
                return "Email is registered on Instagram"
        else:
            return "Unable to extract the email input field"

    except requests.exceptions.RequestException as e:
        return f"Error: {e}"

    return "Email is not registered on Instagram"

# Reading the emails from a text file
with open("emails.txt", "r") as file:
    emails = file.readlines()
    emails = [email.strip() for email in emails]

# Checking each email
for email in emails:
    result = check_email(email)
    print(f"{email}: {result}")

 

وهذه هو الرابط المقصود :

https://www.instagram.com/accounts/password/reset/?source=fxcal

 

الفكرة :

يقوم الكود بفتح الصفحه وثم يقوم بفحص الإيميلات الموجوده مسبقا في txt .. هل هي مسجله؟ ام لا؟  

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المشكلة هو أنك تحاول استخراج محتوى ويب يتم إنشاؤه ديناميكيًا باستخدام جافا سكريبت، أي تقوم بإنشاء محتواها باستخدام جافا سكريبت بعد تحميل الصفحة الأولية من HTML

و مكتبة requests التي استخدمتها قادرة فقط على الحصول على المحتوى الثابت من HTML الذي يظهر أولاً، لالتقاط المحتوى الذي يتم تحميله ديناميكيًا، ولذلك عليك باستخدام selenium الذي يحاكي متصفحًا حقيقيًا ويمكنه التعامل مع جافا سكريبت.

لذلك الكود بعد التعديل واستخدام مكتبة selenium يصبخ كالتالي وعليك قراءة التعلقيات أيضًا:

from bs4 import BeautifulSoup
from selenium import webdriver
import time

# تعريف الدالة للتحقق مما إذا كان البريد الإلكتروني مسجل في إنستجرام

def check_email(email, driver):
    url = "https://www.instagram.com/accounts/password/reset/?source=fxcal"

    try:
        # فتح الرابط في المتصفح
        driver.get(url)
        time.sleep(2)  # الانتظار لتحميل المحتوى الديناميكي

        # تحليل مصدر الصفحة باستخدام BeautifulSoup
        soup = BeautifulSoup(driver.page_source, "html.parser")

        # استخراج حقل إدخال البريد الإلكتروني
        email_input = soup.select_one('input[name="cppEmailOrUsername"]')

        # التحقق مما إذا كان حقل إدخال البريد الإلكتروني موجودًا
        if email_input:
            # استخراج قيمة حقل إدخال البريد الإلكتروني
            email_value = email_input.get("value")

            # التحقق مما إذا كانت قيمة حقل إدخال البريد الإلكتروني تطابق البريد المعطى
            if email_value == email:
                return "البريد الإلكتروني مسجل في إنستجرام"
        else:
            return "تعذر استخراج حقل إدخال البريد الإلكتروني"

    except Exception as e:
        return f"خطأ: {e}"

    return "البريد الإلكتروني غير مسجل في إنستجرام"


# إعداد مشغل Chrome
driver = webdriver.Chrome()

# قراءة البريد الإلكتروني من ملف النص
with open("emails.txt", "r") as file:
    emails = file.readlines()
    emails = [email.strip() for email in emails]

# التحقق من كل بريد إلكتروني
for email in emails:
    result = check_email(email, driver)
    print(f"{email}: {result}")

# إغلاق مشغل Chrome
driver.quit()

ولا تنسى إنشاء ملف باسم emails.txt  بجانب ملف المشروع وضع به الإيميلات التي تريد إختبارها.

أيضًا لاحظ أنني قمت بتعديل اسم الحقل الذي نريد قراءته فهو باسم cppEmailOrUsername وليس email تستطيع تفقد ذلك من خلال أدوات المطور في المتصفح.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...