Python 具有多个变量类输入的BeautifulSoup findAll HTML类

Python 具有多个变量类输入的BeautifulSoup findAll HTML类,python,beautifulsoup,args,Python,Beautifulsoup,Args,我有下面的代码,它可以在网站上搜索类为“奇”或“偶”的div。我想把“奇数”和“偶数”作为函数接受的参数,这将允许我添加其他div。这是我的密码: # # Imports # import urllib2 from bs4 import BeautifulSoup import re import os from pprint import pprint # # library # def get_soup(url): page = urllib2.urlopen(url)

我有下面的代码,它可以在网站上搜索类为“奇”或“偶”的div。我想把“奇数”和“偶数”作为函数接受的参数,这将允许我添加其他div。这是我的密码:

#
# Imports
#

import urllib2
from bs4 import BeautifulSoup
import re
import os
from pprint import pprint

#
# library
#

def get_soup(url):
    page = urllib2.urlopen(url)
    contents = page.read()
    soup = BeautifulSoup(contents, "html.parser")
    body = soup.findAll("tr", ["even", "odd"])
    string_list = str([i for i in body])
    return string_list


def save_to_file(path, soup):
    with open(path, 'w') as fhandle:
        fhandle.write(soup)


#
# script
#

def main():
    url = r'URL GOES HERE'
    path = os.path.join('PATH GOES HERE')
    the_soup = get_soup(url)
    save_to_file(path, the_soup)



if __name__ == '__main__':
    main()
我希望将
*args
合并到代码中,以便
get_soup函数
如下所示:

def get_soup(url, *args):
    page = urllib2.urlopen(url)
    contents = page.read()
    soup = BeautifulSoup(contents, "html.parser")
    body = soup.findAll("tr", [args])
    string_list = str([i for i in body])
    return string_list

def main():
    url = r'URL GOES HERE'
    path = os.path.join('PATH GOES HERE')
    the_soup = get_soup(url, "odd", "even")
    save_to_file(path, the_soup)
不幸的是,这不起作用。想法?

不要将args放在列表中,args已经是一个元组,所以只需传递:

body = soup.findAll("tr", args)
如果您
[args]
,您将得到类似
[(“奇数”、“偶数”)]
的结果

另外,
str([i for i in body])
没有实际意义,这与只执行
str(body)
是一样的,但我不认为这种格式有什么用处。

不要将args放在列表中,args已经是一个元组,所以只需传递它:

body = soup.findAll("tr", args)
如果您
[args]
,您将得到类似
[(“奇数”、“偶数”)]
的结果


另外,
str([i for i in body])
没有实际意义,这与只做
str(body)
是一样的,但我看不出这种格式有什么用处。

你有测试站点的URL吗?你有测试站点的URL吗?这太完美了!至于str([i在body中代表i]),这是两个我还没有清理的函数的组合。我显然复制了错误的函数——尽管它与我的另一个函数做了相同的事情。谢谢@Padraic Cunningham!这太完美了!至于str([i在body中代表i]),这是两个我还没有清理的函数的组合。我显然复制了错误的函数——尽管它与我的另一个函数做了相同的事情。谢谢@Padraic Cunningham!