#python #web-scraping #beautifulsoup #python-requests #scrapy
Вопрос:
На этом сайте https://mavin.io/category
есть несколько категорий. Затем в каждой категории появляется еще больше категорий и так далее. Когда одна категория была достигнута последней, на ней отображается список продуктов, как на этой странице https://mavin.io/search?q=amp;cat=33695
Я хочу просмотреть все категории и получить ссылку на список продуктов (а не ссылки на продукты), как эта https://mavin.io/search?q=amp;cat=33695
Каким будет решение для очистки этих связанных категорий?
import requests
from lxml.html import fromstring
url = 'https://mavin.io/category'
r = requests.get(url)
Комментарии:
1. ты видел скрэпи?
2. Да, я им пользовался.
3. затем также поищите BS4, и он проанализирует веб-страницу для вас на наличие ссылок, которые вы затем можете ввести в свой код выше, если вы не хотите просто освободить скрапи, и это все, что он может найти
4. есть какая-нибудь полезная статья по этому поводу?
5. лучше всего начать, как всегда, с оригинальной документации: crummy.com/software/BeautifulSoup/bs4/doc
Ответ №1:
Вы можете создать рекурсивную функцию, которая пересекает все категории, пока не найдет ни одной:
import requests
from bs4 import BeautifulSoup
url = "https://mavin.io/category"
s = requests.session()
def recur(url, path=None):
if path is None:
path = []
r = s.get(url)
soup = BeautifulSoup(r.content, "html.parser")
cat_links = soup.select(".item-image a:has(h4)")
for a in cat_links:
yield from recur(
"https://mavin.io" a["href"], path [a.h4.get_text(strip=True)]
)
if not cat_links:
yield r.url, path
for link, path in recur(url):
print(link, path)
С принтами:
https://mavin.io/search?q=amp;cat=33695 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Consoles amp; Parts']
https://mavin.io/search?q=amp;cat=63691 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Cup Holders']
https://mavin.io/search?q=amp;cat=40017 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Dash Parts']
https://mavin.io/search?q=amp;cat=33698 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Glove Boxes']
https://mavin.io/search?q=amp;cat=179848 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Interior Door Handles']
https://mavin.io/search?q=amp;cat=33696 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Interior Door Panels amp; Parts']
https://mavin.io/search?q=amp;cat=33700 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Pedals amp; Pads']
https://mavin.io/search?q=amp;cat=33701 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Seats']
https://mavin.io/search?q=amp;cat=50458 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Seat Belt Shoulder Pads']
https://mavin.io/search?q=amp;cat=33702 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Seat Covers']
https://mavin.io/search?q=amp;cat=33703 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Shift Knobs amp; Boots']
https://mavin.io/search?q=amp;cat=33704 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Steering Wheels amp; Horns']
https://mavin.io/search?q=amp;cat=46102 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Sun Visors']
https://mavin.io/search?q=amp;cat=50459 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Switches amp; Controls']
https://mavin.io/search?q=amp;cat=33697 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Floor Mats amp; Carpets']
https://mavin.io/search?q=amp;cat=63690 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Cargo Nets, Trays amp; Liners']
https://mavin.io/search?q=amp;cat=33699 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Mirrors']
https://mavin.io/search?q=amp;cat=33705 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Trim']
https://mavin.io/search?q=amp;cat=40018 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Window Cranks amp; Parts']
https://mavin.io/search?q=amp;cat=33706 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Interior', 'Window Motors amp; Parts']
https://mavin.io/search?q=amp;cat=33651 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Exterior', 'Racks']
https://mavin.io/search?q=amp;cat=36475 ['eBay Motors', 'Parts amp; Accessories', 'Car amp; Truck Parts', 'Exterior', 'Body Kits']
...and so on.