使用漂亮的汤从网页上废弃多个表单

时间:2017-05-17 09:19:51

标签: python web-scraping beautifulsoup

网页中有两种表单。我正在尝试使用以下代码废弃网页的所有表单和相关属性(http://demo.testfire.net/feedback.aspx):

import bs4 as bs 
import urllib.request

sauce = urllib.request.urlopen("http://demo.testfire.net/feedback.aspx").read()
soup = bs.BeautifulSoup(sauce,"html.parser")

form_count = 0
for form_list in soup.find_all('form'):
    form_count+=1
    action_value = soup.find('form').get('action')
    method_value = soup.find('form').get('method')
    id_value = soup.find('form').get('id')
    print(form_count, action_value, method_value, id_value)

然而,只有页面的第一种形式被打印两次。如何废弃表单及其属性? 注意:form_count变量递增为2(因为页面中有2个表单)

1 个答案:

答案 0 :(得分:0)

使用soup.find('form'),它返回它在页面上找到的第一个表单,而不是form_list,它返回当前表单,同时迭代所有表单。您的代码应该是

import bs4 as bs 
import urllib.request

sauce = urllib.request.urlopen("http://demo.testfire.net/feedback.aspx").read()
soup = bs.BeautifulSoup(sauce,"html.parser")

form_count = 0
for form_list in soup.find_all('form'):
    form_count+=1
    action_value = form_list.get('action')
    method_value = form_list.get('method')
    id_value = form_list.get('id')
    print(form_count, action_value, method_value, id_value)