美丽汤网页抓取/获取产品链接

问题描述 投票:0回答:2

我正在尝试从一个本地网站获取产品名称及其价格,为此我使用的是 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'])

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

您能为这个问题提出一个解决方案吗

谢谢!

python beautifulsoup web-crawler
2个回答
1
投票

根据链接来看,

j_product_link
类拥有所有链接,因此我们可以找到所有具有
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'])

0
投票

您可以按照下面的架构尝试其他产品 URL 来源选项。 在您的具体情况下,Mechta 有 站点地图索引 - 获取这些索引并解析 XML。

© www.soinside.com 2019 - 2024. All rights reserved.