处理Web抓取中的类多输入

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

enter image description here

嗨,我试图废弃值=“36”,但我不知道如何处理这个类有多个输入的事实。

我的代码如下:

## cdkitchen.com
url= 'http://www.cdkitchen.com/recipes/recs/32/Snowball_Cookies_II54545.shtml'
r = requests.get(url)
page_body = r.text
soup=BeautifulSoup(page_body, 'html.parser')
stat= soup.find('div', class_='col-md-4 col-sm-4 mb-20')
for a in stat.find('form', class_='change-servs-form'):
    print(a.get_value())

get_value()不起作用,我尝试了一些其他的东西,但我被阻止了,是否有一种简单的方法来指定我们要废弃的输入?

python web-scraping beautifulsoup
2个回答
2
投票

这是你在beautifulsoup find方法中正确指定类的方法 {'class': 'classname'}

此外,使用soup.get('attribute')从给定标签中获取任何属性(value用于此事)。

工作代码:

stat = soup.find('div', {'class': 'col-md-4 col-sm-4 mb-20'})
for a in stat.find('form', {'class': 'change-servs-form'}):
    print(a.get('value'))

36

注意:我更喜欢CSS选择器,但我不想让你的代码发脾气。你应该调查:)

编辑

使用CSS选择器,从value中的每个input标签获取form attr

stat = soup.find('form', {'class': 'change-servs-form'})
input_tags = stat.select('input')
for a in input_tags:
    print(a.get('value'))

36 21411 改变份量 重启


0
投票

另一种方式可能是下面的东西。使用css选择器:

import requests
from bs4 import BeautifulSoup

res = requests.get('http://www.cdkitchen.com/recipes/recs/32/Snowball_Cookies_II54545.shtml')
soup = BeautifulSoup(res.text, 'lxml')
item_name = '\n'.join([item['value'] for item in soup.select('.change-servs-form input')])
print(item_name)

输出:

36
21411
change servings
reset
© www.soinside.com 2019 - 2024. All rights reserved.