bs4 - извлекает конкретный href в зависимости от другого значения - PullRequest
0 голосов
/ 06 декабря 2018

Итак, я пытаюсь извлечь конкретный пример формы href из приведенных ниже, указав идентификатор размера .... например, я хочу получить значение со значением EU = '39 '. Я хочу иметь возможность печатать именно hrefэто написано в строке, где выделено EU 39

  <a href="/p/nike-air-force-1-07-prm-x-carhartt-wip-av4113-200-83890-83891" EU='38,5' US='6'>38,5</a>
                  <li title="">
                    <a href="/p/nike-air-force-1-07-prm-x-carhartt-wip-av4113-200-83890-83892" EU='39' US='6,5'>39</a>
                  <li title="">
                    <a href="/p/nike-air-force-1-07-prm-x-carhartt-wip-av4113-200-83890-83893" EU='40' US='7'>40</a>
                  <li title="">
                    <a href="/p/nike-air-force-1-07-prm-x-carhartt-wip-av4113-200-83890-83894" EU='40,5' US='7,5'>40,5</a>
                  <li title="">
                    <a href="/p/nike-air-force-1-07-prm-x-carhartt-wip-av4113-200-83890-83895" EU='41' US='8'>41</a>
                  <li title="">

Мой код до сих пор это ниже.Я узнал, как получить отдельные hrefs, но я просто хочу, чтобы те с моим желаемым идентификатором размера, а также с конкретными ключевыми словами.Я пытался, и это сработало, но он просто нашел все с этим ключевым словом .... и я хотел бы получить только те, которые имеют определенное значение ...

import requests
from bs4 import BeautifulSoup as bs


header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"}
s = requests.session()
scraper=cfscrape.create_scraper(sess=s)

link=input("link where I need to find the product: ")
keyword=["examplekeyword"]
def bs_id():

    try:
        r = scraper.get(link, timeout=2, verify=False, headers=header)

    except:
        print("error while connecting...")
        try:
            r = scraper.get(link, timeout=2, verify=False, headers=header)
        except:
            print("error while connecting")

            return

    page = bs(r.text, "html.parser")

    raw_links = page.findAll("a")
    hrefs = []

    for raw_link in raw_links:
        try:
            hrefs.append(raw_link["href"])
        except:
            pass

    for href in hrefs:
        found = False
        for keyword in keywords:
            if(keyword.upper() in href.upper()):
                found = True
                if("http" in href):
                    product_page = href
                else:
                    product_page = site + href

Надеюсь, любой из вас сможет мне помочь,Я действительно новичок в этом, поэтому каждый комментарий помощи будет добрым.Большое спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете попробовать что-то вроде этого, вместо того, чтобы перебирать hrefs, просто перебирать весь тег "a", а затем получать href, который вы хотите.Таким образом, вам нужен только один цикл.

for link in page.find_all('a'):
    if "EU='39'" in link:
        print(link['href'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...