pengantar
Halo semuanya. Baru-baru ini, saya punya ide untuk berbagi dengan lingkaran orang yang tertarik bagaimana pencakar ditulis. Karena sebagian besar khalayak akrab dengan Python, semua contoh lebih lanjut akan ditulis di atasnya.
Bagian ini dirancang untuk memperkenalkan mereka yang belum mencoba sendiri di bidang ini. Jika Anda sudah menjadi pembaca tingkat lanjut, maka Anda dapat dengan aman menggulir lebih jauh, tetapi untuk mempertahankan polanya, saya akan menyarankan Anda untuk sedikit memperhatikan artikel ini.
print('Part 1. Get started')
Alat
- Memprogram bahasa dan perpustakaan yang sesuai
Tentu saja, tanpa itu, tidak ada tempat. Dalam kasus kami, Python akan digunakan. Bahasa ini adalah alat yang sangat kuat untuk menulis pencakar, jika Anda dapat menggunakannya dan perpustakaannya dengan benar: permintaan, bs4, json, lxml, re. - Alat Pengembang
Setiap browser modern memiliki utilitas ini. Secara pribadi, saya nyaman menggunakan Google Chrome atau Firefox. Jika Anda menggunakan browser lain, saya sarankan mencoba salah satu di atas. Di sini kita akan memerlukan hampir semua alat: elemen, konsol, jaringan, aplikasi, debuger. - IDE
, , — , debuger'a . PyCharm JetBrains.
: frontend, backend.
Frontend. HTML , -. : , , , .
Backend. backend api - json xml. , api, , . api -, .
Frontend
, . requests . headers, .. , , . : Kith
import requests
headers = {
'authority': 'www.kith.com',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36',
'sec-fetch-dest': 'document',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'accept-language': 'en-US,en;q=0.9',
}
session = requests.session()
response = session.get("https://kith.com/collections/mens-footwear", headers=headers)
if response.status_code == 200:
print("Success")
else:
print("Bad result")
. (Ctrl+Shift+I) , .
: , , .
soup = BeautifulSoup(response.text, 'html.parser')
for element in soup.find_all('li', class_='collection-product'):
name = element.find('h1', class_="product-card__title").text.strip()
price = element.find('span', class_="product-card__price").text.strip()
link = "https://kith.com/" + element.find('a').get('href')
class Prodcut:
name = str
price = str
link = str
def __init__(self, name, price, link):
self.name = name
self.price = price
self.link = link
def __repr__(self):
return str(self.__dict__)
,
import requests
from bs4 import BeautifulSoup
class Prodcut:
name = str
price = str
link = str
def __init__(self, name, price, link):
self.name = name
self.price = price
self.link = link
def __repr__(self):
return str(self.__dict__)
headers = {
'authority': 'www.yeezysupply.com',
'cache-control': 'max-age=0',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36',
'sec-fetch-dest': 'document',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'navigate',
'sec-fetch-user': '?1',
'accept-language': 'en-US,en;q=0.9',
}
session = requests.session()
response = session.get('https://kith.com/collections/mens-footwear', headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
for element in soup.find_all('li', class_='collection-product'):
name = element.find('h1', class_="product-card__title").text.strip()
price = element.find('span', class_="product-card__price").text.strip()
link = "https://kith.com/" + element.find('a').get('href')
prodcut = Prodcut(name, price, link)
print(prodcut.__repr__())
Kami memeriksa teknologi dan prinsip dasar yang akan kami temui di bagian berikut. Saya sarankan Anda mencoba untuk menyelesaikan tugas-tugas dengan perpustakaan ini sendiri, dan saya juga akan senang mendengar preferensi Anda tentang situs tersebut, yang akan dipilih sebagai contoh. Selanjutnya, kita akan melihat bagaimana mencari titik api backend dan berinteraksi dengannya.