Анализ ссылок с веб-сайта и вывод конкретной ссылки в качестве переменной в Python

#python #web #web-scraping #beautifulsoup #html-parsing

Вопрос:

Я снова застрял с моими первыми попытками в веб-очистке с помощью python.

 url = link
page = requests.get(url)
soup = BeautifulSoup(page.content, features="lxml")
checkout_link = []
links = soup.find_all("a")
for url in soup.find_all('a'):
    if url.get('href') == None:
        pass
    elif len(url.get('href')) >= 200:
        checklist  = 10
        for search in links:
            if "checkout" in search.get("href"):
                checkout_link = search.get("href")
            else:
                pass
    else:
        pass
 

Так что это мой код прямо сейчас. Анализ всех ссылок работает нормально (я хочу, чтобы в этой части было проверено, сколько ссылок доступно в общей сложности, и подумал, что было бы неплохо сделать и то, и другое в одном запросе. Поправьте меня, если я пытаюсь сделать это неправильно), даже если я найду ссылку для оформления заказа и распечатаю ее, я получу правильную ссылку, но я не могу найти решение для ее сохранения в checkout_link, чтобы использовать ее в дальнейшем. После этого я хочу сделать запрос на этот конкретный URL-адрес для оформления заказа.

Ответ №1:

Вам нужно добавить его в список

 checkout_link.append(search.get("href"))
 

Подумайте о том, чтобы выполнить фильтрацию href с помощью селектора атрибутов с помощью оператора * содержит:

 soup.select_one("[href*=checkout]")['href']
 

Комментарии:

1. Работает отлично, я немного изменил код и объединил их как «checkout_link = суп.select_one(«[href*=проверка]»)[‘href’]» — делает его более плавным. Спасибо за помощь!

2. Единственное, что было бы проблемой с select.одним из методов было бы, если бы href не был проверен, например «корзина» — могу ли я хранить в нем несколько значений, например («[href*=проверка]», «[href*=корзина]») [‘href’] ?

3. soup.select_one("[href*=checkout] , [href*=cart]")['href']