Тёмный

Как спарсить ajax на python 3. 

Nikolay
Подписаться 907
Просмотров 5 тыс.
50% 1

Мой личный сайт (с советами по разработке):
dewhole.xyz
Мой интернет-магазин аккумуляторов с доставкой по всей России:
фурукава.рф
Готовый код из этого видео:
import requests
from bs4 import BeautifulSoup
import csv
import time
import urllib
import fake_useragent
HEADERS = {
'Host': 'mail.ru',
'Pragma': 'no-cache',
'Referer': 'mail.ru/',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
'sec-ch-ua-mobile': '?0',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
}
def get_html(url, params=None):
r = requests.get(url, headers=HEADERS, params=params)
return r
def get_pages_count(html):
soup = BeautifulSoup(html, 'html.parser')
paginationTo = soup.find('div', class_='nums')
if paginationTo:
paginationTo = soup.find('div', class_='nums')
pagination = paginationTo.find_all('a')
return int(pagination[-1].get_text())
else:
return 1
def get_content(html):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('a')
catalog = []
for item in items:
item = str(item)
a = item.find("svelte-1kcqj27")
if a != -1:
continue
print(item)
catalog.append({
})
return catalog
def save_file(items, path):
with open(path, 'w', encoding='utf8', newline='') as file:
writer = csv.writer(file, delimiter=',')
writer.writerow([])
for item in items:
writer.writerow([])
def parse():
for URL in [
'mail.ru/',
]:
html = get_html(URL)
if html.status_code == 200:
catalog = []
pages_count = get_pages_count(html.text)
for page in range (1, pages_count + 1):
print(f'Парсинг страницы {page} {pages_count} {URL}...')
html = get_html(URL, params={'PAGEN_1': page})
catalog.extend(get_content(html.text))
time.sleep(1)
FILE = 'parseResult' + '.csv'
save_file(catalog, FILE)
print(f'Получено {len(catalog)} товаров')
else:
print('Error')
parse()

Опубликовано:

 

13 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 20   
@kivi7517
@kivi7517 4 месяца назад
Спасибо большое. Единственный понятный способ. ❤
@ICastTheBan
@ICastTheBan 2 года назад
распарсить ответ очень просто. для этого есть модуль json. ответ приходит обычно как json, а это обычные словари и списки. with open('file.json', 'w', encoding='utf-8') as f: json.dump(list, f, ensure_ascii=False, indent=4) для удобного просмотра овтета используйте from pprint import pprint pprint() # в скобках передаете словарь или список и он красиво отображается
@user-yb2fd6mn3j
@user-yb2fd6mn3j 2 года назад
Огромное спасибо за видео. С Вашей помощью довольно быстро разобрался с ajax.
@xvostov_k
@xvostov_k 2 года назад
Спасибо, пофлексил.
@andrejivanov2641
@andrejivanov2641 2 года назад
Спасибо за видео. Лайк, подписка!!
@alexanderkorolev2619
@alexanderkorolev2619 2 года назад
Если бы было всё так просто на 2022 год, уже так большинство сайтов не пропарсишь
@mexani3m
@mexani3m 2 месяца назад
А если параметров запроса нет, как быть ?
@h-freed
@h-freed 2 года назад
Viktar, куда можно к Вам обратиться за консультацией?
@dewhole6254
@dewhole6254 2 года назад
dewhole.ru
@viktarviktar4477
@viktarviktar4477 3 года назад
Благодарю за видео. Вместе тем, для новичка сложно воспринять структуру парсера в целом, когда Вы удаляете данные в ранее написанном коде, а затем одновременно в него добавляете новые данные. Можно ли Вас попросить выложить конечный результат кода... Ещё раз спасибо.
@dewhole6254
@dewhole6254 3 года назад
Данный код очень подробно описан в другом моем видео по парсингу. Код прикреплю в описание.
@viktarviktar4477
@viktarviktar4477 3 года назад
@@dewhole6254 Это было бы здорово...)
@python689
@python689 Год назад
Здравствуйте, помогите плз, как кожно вытащить текст "Wilson Tour Premier All Court 4B" soup = BeautifulSoup(html, 'lxml') title = soup.find('h1', class_='product--title') Tennis balls Wilson Tour Premier All Court 4B
@user-pp1to4bd5j
@user-pp1to4bd5j 3 года назад
что из этого получилось ?
@dewhole6254
@dewhole6254 3 года назад
? Из этого получается парсить ajax
@devspace9096
@devspace9096 2 года назад
Странное видео. там же в ответе обычный Json, почему бы сразу не показать как его парсить на примере, например, вывода массива заголовков новостей. парсить json при помощи подстрок это крайне странно...
@dewhole6254
@dewhole6254 2 года назад
А еще можно можно привести json к строке через json.dumps, вариантов как всегда, масса
@Zeka1111g
@Zeka1111g 2 года назад
че то бубнит себе под нос
Далее
КТО БОИТСЯ КЛЕЩЕЙ?? #shorts
00:18
Просмотров 1 млн
Как парсить AJAX
8:05
Просмотров 30 тыс.