python - 从 Python Webscraping 结果中删除特定字符串
问题描述
我是网络抓取的新手,目前正在尝试这段代码
import requests
import bs4
from bs4 import BeautifulSoup
import pandas as pd
import time
page = requests.get("https://leeweebrothers.com/our-food/lunch-boxes/#")
soup = BeautifulSoup(page.text, "html.parser")
names = soup.find_all('h2') #name of food
rest = soup.find_all('span', {'class' : 'amount'}) # price of food
for div, a in zip(names, rest):
print(div.text, a.text) # print name / price in same line
它工作得很好,除了我将在下面的链接中显示的一个问题
在字符串“HONEY GLAZED CHICKEN WING”旁边是 0.00 美元,这是由于网站上的购物车应用程序返回的异常值(它共享 span class='amount')。
我将如何删除此字符串并“上移”其他价格,以便它们现在符合并与食物名称相对应
编辑:下面的示例输出
Line1: HONEY GLAZED CHICKEN WING $0.00
Line2: CRISPY CHICKEN LUNCH BOX
Line3: $5.00
Line4: BREADED FISH LUNCH BOX
Line5: $5.00
我想要的输出是这样的:
Line1: HONEY GLAZED CHICKEN WING $5.00
Line2: CRISPY CHICKEN LUNCH BOX $5.00
我正在寻找一种解决方案,该解决方案可以消除异常的 0.00 美元并将其余价格上调
解决方案
我想你可能问错了问题。您可以消除 0.00 美元的异常值,但您的价格结果仍然与名称不匹配。
为了确保您的价格和名称列表的顺序相同,因此它们匹配,首先搜索包含它们的 div 可能更容易:
import requests
import bs4
from bs4 import BeautifulSoup
import pandas as pd
import time
page = requests.get("https://leeweebrothers.com/our-food/lunch-boxes/#")
soup = BeautifulSoup(page.text, "html.parser")
# all the divs that held the foods had this same style
divs = soup.find_all('div', {'style': 'max-height:580px;'})
names_and_prices = {
# name: price
div.find('h2').text: div.find('span', {'class': 'amount'}).text
for div in divs
}
for name, price in names_and_prices.items():
print(name, price)
推荐阅读
- python - 如果条件成立,则计算嵌套组的平均值
- javascript - 在悬停 + L-Click 上添加自定义样式,如文件资源管理器
- c# - HTTPWebResponse 返回错误号:500
- php - Laravel 测试请求
- c++ - 在 C++20 (Visual Studio 2019) 中继承构造函数
- python - 将 SageMaker 上的指标定义为 CloudWatch
- php - 如何在foreach上创建增量号
- python - 在 vscode (Python) 中导入问题
- python - 如何避免 pandas to_json 在 url 中转义前向灰烬
- node.js - ReactJs Build:从未定义的任务:许可证