کتابخانهٔ پایتون برای تجزیهٔ HTML و وب اسکریپینگ
کتابخانهٔ متنباز پایتون که تجزیهٔ صفحات وب، استخراج دادهها و وب اسکریپینگ را تسهیل میکند. این امکان را برای تجزیهٔ پیشرفتهٔ HTML، رندر جاوااسکریپت و موارد دیگر فراهم میآورد.
وب یک اقیانوس اطلاعات است و به عنوان توسعهدهندگان نرمافزار، اغلب خود را در نیاز به استخراج دادههای خاص از وبسایتها مییابیم. وباسکرپینگ یک تکنیک قدرتمند است که به ما امکان خودکارسازی فرآیند جمعآوری دادهها از صفحات وب را میدهد. در میان کتابخانههای متعدد موجود، Requests-HTML به عنوان گزینهای چندمنظوره و کاربرپسند برجسته میشود. این یک کتابخانه پایتون است که با ترکیب قدرت دو کتابخانه محبوب - Requests و BeautifulSoup - امکان وباسکرپینگ را فراهم میکند. این کتابخانه با در نظر گرفتن سادگی و سهولت استفاده طراحی شده است و انتخابی عالی برای مبتدیان و توسعهدهندگان با تجربه به شمار میآید.
کتابخانه Requests-HTML یک API شهودی ارائه میدهد که طوری طراحی شده است که حس مشابهی با کتابخانه معروف Requests داشته باشد، به طوری که برای هر کسی که با درخواستهای HTTP آشناست، به راحتی قابل استفاده باشد. ویژگیهای مهمی در این کتابخانه وجود دارد، از جمله تجزیه فایلهای بزرگ HTML، پشتیبانی از سلکتورهای CSS، پشتیبانی از سلکتورهای XPath، شبیهسازی user-agent، پیگیری خودکار ریدایرکتها، دریافت فهرست تمام لینکهای صفحه، استخراج محتوای متنی یک عنصر، جستجو برای لینکها درون یک عنصر، حفظ پایداری جلسه، چرخش آسان user-agent و موارد دیگر.
بر خلاف تجزیهکنندههای سنتی HTML، Requests-HTML قادر به رندر کردن محتوای JavaScript است و این باعث میشود برای وبسایتهایی که دادهها را بهصورت پویا با استفاده از AJAX یا فریمورکهای JavaScript بارگذاری میکنند، مناسب باشد. API شهودی آن، پشتیبانی از رندر JavaScript و انتخاب انعطافپذیر عناصر با استفاده از سلکتورهای CSS یا XPath، آن را به ابزاری ارزشمند برای هر پروژهٔ وباسکریپینگ تبدیل میکند. چه دادهها را برای تحقیق جمعآوری کنید و چه یک برنامهٔ وب بسازید، کتابخانهٔ Requests-HTML قطعاً شایستگی بررسی دارد. پس چرا آن را در پروژهٔ بعدی وباسکریپینگ خود امتحان نکنید؟ برنامهنویسی خوش!
شروع کار با Requests-HTML
روش پیشنهادی و آسان برای نصب Requests-HTML استفاده از pip است. لطفاً برای نصب روان از فرمان زیر استفاده کنید.
نصب Requests-HTML با pip
pip install requests-htmlمیتوانید آن را بهصورت دستی نیز نصب کنید؛ فایلهای آخرین نسخه را مستقیماً از مخزن گیتهاب دانلود کنید.
استخراج محتوا از یک صفحه HTML با پایتون
کتابخانه منبع باز Requests-HTML به توسعهدهندگان نرمافزار امکان بارگذاری و استخراج محتوا از یک فایل HTML را در برنامههای پایتون میدهد. یکی از ویژگیهای اصلی که این کتابخانه را متمایز میکند، ادغام یکپارچه آن با PyQuery است. این ادغام به کتابخانه اجازه میدهد تا به راحتی اسناد HTML را تجزیه کرده و دادهها را با استفاده از سلکتورهای شبیه jQuery استخراج کند. این انعطافپذیری فرآیند استخراج داده را ساده میکند و زمان و تلاش توسعهدهندگان را صرفهجویی مینماید. مثالهای زیر نشان میدهند چگونه توسعهدهندگان میتوانند عناوین و لینکهای یک صفحه وب را تنها با چند خط کد پایتون استخراج کنند.
چگونه عناوین و لینکهای یک صفحه وب را با API پایتون استخراج کنیم؟
from requests_html import HTMLSession
url = 'https://www.example-blog.com'
session = HTMLSession()
response = session.get(url)
# Render JavaScript to ensure dynamic content loads
response.html.render()
# Extract titles and links of the latest articles
articles = response.html.find('.article')
for article in articles:
title = article.find('.title', first=True).text
link = article.find('a', first=True).attrs['href']
print(f"Title: {title}\nLink: {link}\n")
تجزیه و تحلیل یک صفحه وب و استخراج یک عنصر خاص با پایتون
کتابخانه منبع باز Requests-HTML ویژگی بسیار مفیدی برای استخراج یک عنصر خاص درون یک سند HTML از طریق API پایتون فراهم کرده است. این کتابخانه از هر دو سلکتورهای CSS و عبارات XPath پشتیبانی میکند و به شما انعطافپذیری در انتخاب و استخراج عناصر خاص از صفحه HTML میدهد. همچنین کتابخانه امکان استفاده از عبارات XPath برای انتخابهای پیچیدهتر را فراهم میآورد. علاوه بر این، کتابخانه پشتیبانی کامل برای تعامل با فرمهای وب نیز ارائه میدهد. مثال زیر نشان میدهد چقدر ساده است که با استفاده از کتابخانه Requests-HTML یک صفحه وب را اسکرپ کنید.
چگونه یک عنصر خاص از صفحه HTML را با کتابخانه پایتون استخراج کنیم؟
from requests_html import HTMLSession
# Create an HTML session
session = HTMLSession()
# Send a GET request and render JavaScript (if any)
response = session.get('https://example.com')
# Access page content
html_content = response.text
# Extract specific elements using CSS selectors
titles = response.html.find('.article-title')
# Print the titles
for title in titles:
print(title.text)