【问题标题】:bs4 - extract specific href depending other valuebs4 - 根据其他值提取特定的 href
【发布时间】:2019-05-08 08:53:32
【问题描述】:

所以,我试图通过给出尺寸 ID 来提取下面的特定 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="">

到目前为止,我的代码如下。我发现了如何获取单个 href,但我只想要那些具有我希望的尺寸 ID 和特定关键字的。我试过了,它奏效了,但它只是用那个关键字找到了所有东西......我想只得到那些具有特定价值的东西......

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

希望你们中的任何人都可以帮助我,我对此真的很陌生,所以每一个帮助的评论都会很友善。非常感谢。

【问题讨论】:

  • 试试page.select('a[eu=39]')。这应该选择所有具有eu 属性的a 标记,其值为39

标签: python beautifulsoup python-requests


【解决方案1】:

您可以尝试这样的事情,而不是遍历href,只需遍历整个“a”标签,然后获取您想要的href。这样你只需要一个循环。

for link in page.find_all('a'):
    if "EU='39'" in link:
        print(link['href'])

【讨论】:

  • 太棒了!很高兴我能帮助你。 :) 如果它不会太麻烦,点击这个答案为“接受”给我点做......某事......还不确定是什么哈哈,但它确实让我们在斯金纳盒子里,所以,一般来说,如果您最终使用该代码,请选中该框。 ;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2021-09-18
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多