我正在尝试从一个本地网站获取产品名称及其价格,为此我使用的是 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'])
代码运行良好,但是它没有从网站获取所有产品,它跳过了一些产品(没有产品链接)
您能为这个问题提出一个解决方案吗
谢谢!
根据链接来看,
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'])
您可以按照下面的架构尝试其他产品 URL 来源选项。 在您的具体情况下,Mechta 有 站点地图索引 - 获取这些索引并解析 XML。