我对Python的网页抓取相当新;在阅读了关于该主题的大部分教程后,我决定试一试。我终于有一个网站工作,但输出格式不正确。
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")
for div in soup.find_all('h2'): #prints the name of the food"
print(div.text)
for a in soup.find_all('span', {'class' : 'amount'}): #prints price of the food
print(a.text)
输出
我希望食物的名称与食物的相应价格并排印刷,并以“ - ”连接......感谢任何给予的帮助,谢谢!
编辑:在下面的@Reblochon Masque评论之后 - 我遇到了另一个问题;正如你所看到的,这是一个来自网站上内置购物车的价值0.00美元,如何将其排除在异常值之外并继续向下移动,同时确保价格中的其他项目“向上移动”以对应到正确的食物?
答案 0 :(得分:1)
你可以压缩两个结果:
names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for div, a in zip(names, rest):
print('{} - {}'.format(div.text, a.text))
# print(f"{div.text} - {a.text}") # for python > 3.6
答案 1 :(得分:1)
最佳做法是在for循环中使用zip
函数,但我们也可以这样做。这只是为了表明我们可以使用indexing
两个列表来完成。
names = soup.find_all('h2')
rest = soup.find_all('span', {'class' : 'amount'})
for index in range(len(names)):
print('{} - {}'.format(names[index].text, rest[index].text))