Requests va BeautifulSoup kutubxonalari

Requests va BeautifulSoup kutubxonalari

Pythonist

🌙 Assalaomu Aleykum qadrli {user}!

REQUESTS (SO'ROVLAR)

Requests - bu Python uchun oddiy HTTP kutubxona. Endi keraksiz murakkab dasturlash interfeyslari bilan urllib2'ni o'zlashtirishingiz shart emas, Hammasi juda oson)

request - so'rov, talab

Requests(So'rovlar) kutubxonasi HTTP - HEAD, GET, POST, PUT, PATCH va DELETE so'rovlarini yuborish imkonini beradi. Barcha sarlavhalar va parametrlarni qo'shish, shuningdek server javoblari bilan ishlash juda oson. Albatta, requests urllib2 ustida ishlaydi, ammo hamma qiyin ishlarni va tryuklarni bajaradi.

HTTP SO'ROV NIMA?

HTTP so'rovi kimdir sizning saytingizni brauzerida ko'rishga urinayotganda sodir bo'ladi. Ularning brauzeri serverdan u yerda joylashtirilgan veb-sahifani so'raydi va server brauzerga saytni yuklash uchun kerakli fayllarni beradi. Xuddi shu jarayon request(so'rov) deb nomlanadi!


Request jo'natish :

>>> import requests
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200

Natija sifatida 200 raqamani oldik. Bu saytga qilingan request(talab) muvaffaqiyatli bajarildi deganidir! Barcha status_code'lar ro'yxati va vazifasi: cherting!

Yoki bo'lmasam:

import requests

url = requests.get('http://ismingiz.uz/')
print(url.content)

Ushbu kod bizga saytning kodini chiqarib beradi:

b'<!DOCTYPE html>\n<html>\n<head>\n<title>\xd0\x8e\xd0\xb7\xd. O\'zbek Ismlari Ma`nosi</title>\n<meta name="description" content="O\'zbek ismlari ma\'nosi. \xd0\x8e\xd0\xb7\xd0\xb1\xd0\xb5\xd0\xba">\n<meta name="keywords" content="ismlar ma\'nosi, ism tanlash, farzandga ism qo\'yish, bolaga ism qo\'yish, qizlar ismi, ismlar ma\'nosi, qizlarga ism, o\'g\'il bolalar ismi, qizlar ismi,uzbek, ozbek, o\'zbek, ism, mano, ma\'no, o\'zbek ismlari, ismlar ma\'nosi,arabcha ismlar, forscha ismlar, arabcha ismlar ma\'nosi, forscha ismlar ma\'nosi, turkcha ismlar, ismlar va ularning ma\'nosi ......

Ko'rib turganingizdek bu yerdan ma'lum bir ma'lumotni olish ham, ko'rish ham qiyin :(

Ushbu kamchilikni bartaraf etish u-n bizga pythonning yana bir mashhur kutubxonasi BeautifulSoup4 yordamga keladi :)

BEAUTIFULSOUP4

BeautifulSoup4(chiroyli sho'rva yoki mazzali sho'rva) 🤦🏻‍♂️

Mayli, bizni uning nomi yoki tarjimasi emas balkim qila oladigan ishlari qiziqtiradi:

BeautifulSoup4 bu web-sahifalardan ma'lumot to'plashni osonlashtiradigan kutubxona. U HTML(gipermatnli) yoki XML(kengaytirilgan gipermatnli) belgilash tillari ustida yasalgan bo'lib, tahlil qilishda, izlashda va o'zgartirishda sizning sevimli parseringizga yordam beradi.


O'RNATISH (INSTALL)

Windows:

pip install beautifulsoup4

Ubuntu Linux, Debian:

$ apt-get install python3-bs4


Nima haqida gap ketayotaganini his qilish uchun quyidagi kodga e'tiborli bo'ling:

html_code = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

Tasavvur qilamiz biz request orqali html kod ya'ni saytning kodini oldik va u yuqoridagidek natija berdi biz uni html_code o'zgaruvchisiga tenglab qo'ydik endi ushbu kod ichidan faqat matnlari kerak bo'lsa quyidagi 3 qatorli kodni yozamiz:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_code, 'html.parser')
print(soup.get_text())

va bizga hamma koddagi matnni chiqarib beradi:

The Dormouse's story

The Dormouse's story

Once upon a time there were three little sisters; and their names were
Elsie,
Lacie and
Tillie;
and they lived at the bottom of a well.

...


Menimcha hamma bu ikki juda kerakli modullarni ishlash prinsipini tushunib oldi!

Tabriklayman! Hozirgina siz Web-Scraper bo'ldingiz :)

Web-scraping nima?

Web-scraping (inglizcha web-sahifadan qirib tashlash, ajratish) - bu ma'lumotlarning web-resurs sahifalaridan ajratib olish texnologiyasi... Davomi...


Maqola Pythonist kanali uchun Hoosnick tomonidan ❤️ yozildi.


Report Page