首页 > 解决方案 > Beautiful Soup 网页抓取/获取产品链接

问题描述

我正在尝试从一个本地网站获取产品名称及其价格,为此我使用的是 Beautiful Soup。我的代码:

 productlinks = []

for x in range(1,3):
    r = requests.get(F'https://www.mechta.kz/section/stiralnye-mashiny/?arrFilter5_pf%5BNEW%5D=&arrFilter5_pf%5BARFP%5D=43843%2C43848&arrFilter5_pf%5BPROMOCODE_PROCENT%5D%5BLEFT%5D=&arrFilter5_pf%5BPROMOCODE_PROCENT%5D%5BRIGHT%5D=&arrFilter5_pf%5BMINPRICE_s1%5D%5BLEFT%5D=38990&arrFilter5_pf%5BMINPRICE_s1%5D%5BRIGHT%5D=1171000&set_filter=Y&PAGEN_2={x}')
    soup = BeautifulSoup(r.content, 'lxml')
    productlist = soup.find_all('div', class_='aa_st_img iprel')
    for item in productlist:
            for link in item.find_all('a', href=True):
                productlinks.append(baseurl + link['href'])

该代码运行良好,但是它没有从网站上获取所有产品,它跳过了一些产品(没有产品链接)

你能建议这个问题的解决方案吗

谢谢!

标签: pythonbeautifulsoupweb-crawler

解决方案


根据链接看起来该类j_product_link具有所有链接,因此我们可以找到所有带有 class 的标签j_product_link

例如

soup.find_all('a', class_='j_product_link')

可能的解决方案

for x in range(1,3):
    r = requests.get(F'https://www.mechta.kz/section/stiralnye-mashiny/?arrFilter5_pf%5BNEW%5D=&arrFilter5_pf%5BARFP%5D=43843%2C43848&arrFilter5_pf%5BPROMOCODE_PROCENT%5D%5BLEFT%5D=&arrFilter5_pf%5BPROMOCODE_PROCENT%5D%5BRIGHT%5D=&arrFilter5_pf%5BMINPRICE_s1%5D%5BLEFT%5D=38990&arrFilter5_pf%5BMINPRICE_s1%5D%5BRIGHT%5D=1171000&set_filter=Y&PAGEN_2={x}')
    soup = BeautifulSoup(r.content, 'lxml')
    productlist = soup.find_all('a', class_='j_product_link')
    for link in productlist:
        productlinks.append(baseurl + link['href'])

推荐阅读