Python 具有多个变量类输入的BeautifulSoup findAll HTML类
我有下面的代码,它可以在网站上搜索类为“奇”或“偶”的div。我想把“奇数”和“偶数”作为函数接受的参数,这将允许我添加其他div。这是我的密码: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)
#
# 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!