无法获取不同项目的所有链接

2024-10-02 22:28:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个脚本,从一个网页中获取不同产品的链接。我的意图是只有当产品有Ajouter au panier符号,即Add to Basket时,才删除链接。html结构非常简单,易于使用,但是获取所需链接的逻辑似乎很复杂。我使用了三个不同的链接来显示变化。你知道吗

很少有网址指向所需的产品,但仍然有目录(如果我利用他们的链接),这产生了一些更多的产品。查看图片链接,看看自己。我在第一张图片中的目录上画了一个圆圈,它仍然可以生产出想要的产品,而在那一页中,想要的产品已经很少了。你知道吗

check out the variation

another one: only catalogues

这是我写的剧本:

import requests 
from urllib.parse import urljoin
from bs4 import BeautifulSoup

urls = (
    "https://www.directmedical.fr/categorie/aspirateurs-de-mucosite.html",
    "https://www.directmedical.fr/categorie/literie.html",
    "https://www.directmedical.fr/categorie/vetement.html"
    )

def get_links(link):
    r = requests.get(link)
    soup = BeautifulSoup(r.text,"lxml")
    for item in soup.select(".browseCategoryName a"):
        ilink = urljoin(link,item.get("href"))
        print(ilink)

if __name__ == '__main__':
    for url in urls:
        get_links(url)

如何使用这些URL获得所有带有Ajouter au panier符号的产品链接?你知道吗


Tags: httpsimportget产品链接htmlwwwlink
1条回答
网友
1楼 · 发布于 2024-10-02 22:28:13

如果您需要从初始页和(如果初始页上没有产品)类别页中选择产品链接,请尝试

import requests 
from urllib.parse import urljoin
from bs4 import BeautifulSoup

domain = "https://www.directmedical.fr/"
urls = (
    "https://www.directmedical.fr/categorie/aspirateurs-de-mucosite.html",
    "https://www.directmedical.fr/categorie/literie.html",
    "https://www.directmedical.fr/categorie/vetement.html"
    )

def get_links(link):
    r = requests.get(link)
    soup = BeautifulSoup(r.text, "lxml")
    products = soup.select(".browseElements td > a")
    if products:
        for item in products:
            ilink = urljoin(link, item.get("href"))
            print(ilink)
    else:
        categories = [urljoin(domain, item.get("href")) for item in soup.select(".browseChildsCategorys td > a")]
        for category in categories:
            c = requests.get(category)
            c_soup = BeautifulSoup(c.text, "lxml")
            for item in c_soup.select(".browseElements td > a"):
                c_link = urljoin(domain, item.get("href"))
                print(c_link)

if __name__ == '__main__':
    for url in urls:
        get_links(url)

相关问题 更多 >