Как очистить данные от телемарта, используя python? - PullRequest
0 голосов
/ 16 апреля 2020
import bs4
import requests
url = requests.get(
    'https://www.telemart.pk/mobile-and-tablets/mobile-phone.html')
soup = bs4.BeautifulSoup(url.text, features='lxml')
print(soup)

Я хочу отменить цену, ссылку на изображение, ссылку на продукт, название каждого элемента, но данные представлены в формате XHR. так как я могу получить данные из xhr

1 Ответ

0 голосов
/ 16 апреля 2020

Вы можете получить контент с этой страницы, используя HTTP-запросы, как показано ниже.

import requests
from bs4 import BeautifulSoup

link = 'https://www.telemart.pk/index.php/home/listed/click/{}'

payload = {
    'category': '35',
    'rating': '',
    'sub_category': '',
    'brand': '',
    'attributesids': '',
    'ishiddenprice': '0',
    'featured': '',
    'range': '6499;471999',
    'express_delivery': '',
    'text': '',
    'view_type': 'grid'
}

with requests.Session() as s:
    r = s.get(link)
    csrf_id = r.cookies['csrf_cookie_name']
    payload['csrf_test_name'] = csrf_id

    for i in range(0,144,48):
        res = s.post(link.format(i),data=payload,headers={"x-requested-with":"XMLHttpRequest"})
        soup = BeautifulSoup(res.text,"html.parser")
        for item in soup.select(".product-details"):
            product_name = item.select_one("h2.product-name").get_text(strip=True)
            price = item.select_one(".price > ins").get_text(strip=True)
            print(product_name,price)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...