Как говорили другие, это новый синтаксис для создания функций.
Однако этот вид функций отличается от обычных:
this
стоимость. Как объяснено , spec , An ArrowFunction не определяет локальные привязки для arguments
, super
, this
или new.target
. Любая ссылка на arguments
, super
, this
или new.target
в ArrowFunction должна быть разрешена к привязке в лексически закрывающей среде. Обычно это будет функциональная среда сразу входящей функции. Хотя функция ArrowFunction может содержать ссылки на super
, функциональный объект, созданный на шаге 4, не превращается в метод, выполняя MakeMethod . Функция ArrowFunction , которая ссылается на super
, всегда содержится внутри функции [ Arrow [], а необходимое для реализации super
доступное через область который захватывается функциональным объектом ArrowFunction . var f = a => a;
f(123); // 123
new f(); // TypeError: f is not a constructor
Как описано в документации BeutifulSoup
Вы можете использовать это:
soup = BeautifulSoup(html)
results = soup.findAll("td", {"valign" : "top"})
EDIT:
Чтобы вернуть теги которые имеют только атрибут valign = "top", вы можете проверить длину свойства tag attrs
:
from BeautifulSoup import BeautifulSoup
html = '<td valign="top">.....</td>\
<td width="580" valign="top">.......</td>\
<td>.....</td>'
soup = BeautifulSoup(html)
results = soup.findAll("td", {"valign" : "top"})
for result in results :
if len(result.attrs) == 1 :
print result
Это возвращает:
<td valign="top">.....</td>
, если вы хотите искать только имя атрибута с любым значением
from bs4 import BeautifulSoup
import re
soup= BeautifulSoup(html.text,'lxml')
results = soup.findAll("td", {"valign" : re.compile(r".*")})
r".*"
, в результате чего это не компилируется.
– Jack Cole
20 December 2017 в 20:02
Самый простой способ сделать это - использовать новый метод CSS select
:
soup = BeautifulSoup(html)
results = soup.select('td[valign="top"]')
Вы можете использовать функции lambda
в findAll
, как описано в документации . Чтобы в вашем случае искать тэг td
только с valign = "top"
, используйте следующее:
td_tag_list = soup.findAll(
lambda tag:tag.name == "td" and
len(tag.attrs) == 1 and
tag["valign"] == "top")
Просто передайте его как аргумент findAll
:
>>> from BeautifulSoup import BeautifulSoup
>>> soup = BeautifulSoup("""
... <html>
... <head><title>My Title!</title></head>
... <body><table>
... <tr><td>First!</td>
... <td valign="top">Second!</td></tr>
... </table></body><html>
... """)
>>>
>>> soup.findAll('td')
[<td>First!</td>, <td valign="top">Second!</td>]
>>>
>>> soup.findAll('td', valign='top')
[<td valign="top">Second!</td>]
<td width="580" valign="top">
? Я не хочу их захватывать, только теги, единственным атрибутом которых является valign="top"
– Snaxib
20 January 2012 в 00:27
<tr>
с атрибутомvalign="top"
, в том числе с другими атрибутами (<td width="580" valign="top">
также возвращается в этом поиске). Я ищу способ найти<tr>
, единственным атрибутом которого являетсяvalign="top"
– Snaxib 20 January 2012 в 00:37