【问题标题】:Parsing links from website, and outputting a specific one as variable in Python从网站解析链接,并在 Python 中将特定链接作为变量输出
【发布时间】:2021-07-23 06:15:44
【问题描述】:

我第一次尝试使用 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 中以进一步使用它的解决方案。之后我想向这个特定的结帐网址发出请求。

【问题讨论】:

    标签: python web web-scraping beautifulsoup html-parsing


    【解决方案1】:

    您需要将其附加到列表中

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

    考虑使用 * 包含运算符通过属性选择器进行 href 过滤:

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

    【讨论】:

    • 完美运行,我稍微更改了代码并将两者放在一起作为 "checkout_link = soup.select_one("[href*=checkout]")['href']" - 让它更流畅.感谢您的帮助!
    • select.one 方法唯一会出现问题的是,如果 href 不是结帐,例如“cart” - 我是否能够将多个值存储到其中,例如 ("[href* =checkout]", "[href*=cart]") ['href'] ?
    • soup.select_one("[href*=checkout] , [href*=cart]")['href']
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2015-06-18
    • 2012-09-18
    • 2014-09-01
    • 2018-06-02
    • 1970-01-01
    相关资源
    最近更新 更多