python - 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'])
该代码运行良好,但是它没有从网站上获取所有产品,它跳过了一些产品(没有产品链接)
你能建议这个问题的解决方案吗
谢谢!
解决方案
根据链接看起来该类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'])
推荐阅读
- html - 在 openwrt 中进行固件升级时无法在 platform.sh scipt 中运行 fw_printenv 命令
- python - 删除临时文件并清空回收站_Python 3?
- angular - Nativescript 无法使用 Angular 6 获取 Textfield 元素的值
- php - 带有 JDBC 的 Oracle SQL Server 与 PHP 一起使用
- java - JavaParser 如何获取块语句的原始行大小?
- ios - 如何将 CoreNFC 与 Qt 的 ApplicationDelegate 一起使用?
- swift - 带范围的开关盒
- java - Apache Common Pools 从版本 1 迁移到版本 2 以及用尽的操作
- android - 片段中的进度条
- python - 如何使用另一个函数的结果?