在网站上有几张桌子。我想选择其中一个,这是我的问题。 我写的时候:
g_data=soup.find_all("table",{"class":"awT votegroup votegroup7 wH episodesList"}, {"id":"sezon7"})
它只找到了我的第7号表格,但是当我写下来时:
html_1=("table",{"class":"awT votegroup votegroup7 wH episodesList"}, {"id":"sezon7"})
g_data=soup.find_all(html_1)
它找到所有表(从表1到表7)。有什么不同?为什么第二种解决方案无效?我想只使用表nr 7并将其变成一个函数,所以我需要第二个解决方案正常工作。 所有代码:
from bs4 import BeautifulSoup
import requests
r=requests.get("http://www.filmweb.pl/serial/Synowie+Anarchii-2008-479538/episodes#sezon7")
soup=BeautifulSoup(r.content)
html_1=("table",{"class":"awT votegroup votegroup7 wH episodesList"}, {"id":"sezon7"})
g_data=soup.find_all(html_1)
print g_data
答案 0 :(得分:3)
您传入的搜索参数不正确。您必须将这些内容合并到一个字典中,而不是使用元组:
soup.find_all("table", {"class":"awT votegroup votegroup7 wH episodesList", "id":"sezon7"})
这有效,但只有只是; class
与列表匹配(因为class
属性中的类的顺序并不重要);你不需要它,因为你已经有id
匹配。
由于您只查找一个表,请使用soup.find()
:
soup.find("table", id="sezon7")
您的搜索基本上是在寻找名称为table
或{"class":"awT votegroup votegroup7 wH episodesList"}
或{"id":"sezon7"}
的任何元素,因为您只传递了{的元组{1}}过滤。
如果你想将它包装成一个函数,你可以只使用变量而不是字符串文字:
name