BeautifulSoup - взять из ссылки только нужные мне фрагменты
Как мне взять из ссылки "2701823" https://kaspi.kz/shop/p/birjusa-m132-seryi-2701823/?c=750000000 (ссылки будут меняться)?
from bs4 import BeautifulSoup as bs
import requests
import re
headers = {'accept': '*/*',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) snap Chromium/78.0.3904.108 Chrome/78.0.3904.108 Safari/537.36'}
base_url = 'https://kaspi.kz/shop/c/smartphones/?q=%3Acategory%3ASmartphones&page=1'
def kaspi_parser(base_url, headers):
products = []
urls = []
urls.append(base_url)
product_pages = []
product_pages.append('https://kaspi.kz')
session = requests.Session()
request = session.get(base_url, headers=headers)
if request.status_code == 200:
soup = bs(request.content, 'html.parser')
try:
pagination = soup.find_all('a', attrs={'class': 'pagination__el'})
count = int(pagination[-2].text)
for i in range(1, count + 50):
url = f'https://kaspi.kz/shop/c/smartphones/?q=%3Acategory%3ASmartphones&page={i}'
if url not in urls:
urls.append(url)
except:
pass
for url in urls:
request = session.get(url, headers=headers)
soup = bs(request.content, 'html.parser')
divs = soup.find_all('div', attrs={'item-card__info'})
for div in divs:
try:
href = div.find('a', 'ddl_product_link')['href']
id = div.find('a', class_=re.compile('-id'))
print(href)
print(id)
except:
pass
else:
print('ERROR')
return products
kaspi_parser(base_url, headers)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Простенькая регулярка для вытаскивания чисел из ссылки:
import re
items = [
'https://kaspi.kz/shop/p/birjusa-m132-seryi-2701823/?c=750000000',
'https://kaspi.kz/shop/p/birjusa-m134-seryi-2701321/?c=750000000',
'https://kaspi.kz/shop/p/birjusa-m134-seryi-1111321/',
]
for url in items:
match = re.search('-(\d+)/', url)
if match:
print(match.group(1))
# 2701823
# 2701321
# 1111321