我写了两个表达式来查找网页中的某些元素。元素在表中的<h2>All Users</h2>
<ul *ngFor="let user of users">
<li>{{user.name}}</li>
<ul *ngFor="let hob of user.hobby">
<li>{{hob.hobbyType}}</li>
中。问题是tr
有两种类型:
tr
我想从这两种类型中获取内容。
当我尝试使用<tr class="even">
<tr class="odd">
时,它以正确的方式工作。但是,当我使用.find_all()
时,我发现它也能正常工作,但问题是选择器看起来难以辨认。我可以使选择器更具可读性和简洁性吗?
使用.select()
:
.find_all()
使用soup.find("table",class_="rightLinks").find_all("tr",class_=["even","odd"])
:
.select()
如何使后者更具可读性和简洁性?
答案 0 :(得分:1)
快到了。只需简化您的逻辑或CSS选择器(try
{
var result = await httpClient.GetAsync(endpoint);
var response = await result.Content.ReadAsStringAsync();
data = JsonConvert.DeserializeObject<TResult>(response);
}
catch (Exception exp)
{
Console.Write(exp.InnerMessage);
}
)。
,
原始
您可以使用选择器模板不重复公用部分soup.select("table.rightLinks tr.even,tr.odd"))
。
table.rightLinks tr.
目标表中仅存在selector_template = "table.rightLinks tr.{cls}"
soup.select(", ".join((selector_template.format(cls="even"), selector_template.format(cls="odd"))))
和even
tr类吗?如果是这样,为什么不简单地使用odd
?