Возможно, вы искали неверное значение атрибута class
. Попробуйте приведенное ниже значение атрибута class
.
from bs4 import BeautifulSoup as bs
import requests
import lxml
source = requests.get("https://github.com/bitcoin-dot-org/bitcoin.org/find/master").text
soup = bs(source, "lxml")
tbody = soup.find("tbody", class_= "js-tree-browser-result-template")
print(tbody)
Выход:
<tbody class="js-tree-browser-result-template" hidden="">
<tr class="js-navigation-item tree-browser-result">
<td class="icon"><svg aria-hidden="true" class="octicon octicon-chevron-right" height="16" version="1.1" viewbox="0 0 8 16" width="8"><path d="M7.5 8l-5 5L1 11.5 4.75 8 1 4.5 2.5 3l5 5z" fill-rule="evenodd"></path></svg></td>
<td class="icon"><svg aria-hidden="true" class="octicon octicon-file" height="16" version="1.1" viewbox="0 0 12 16" width="12"><path d="M6 5H2V4h4v1zM2 8h7V7H2v1zm0 2h7V9H2v1zm0 2h7v-1H2v1zm10-7.5V14c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h7.5L12 4.5zM11 5L8 2H1v12h10V5z" fill-rule="evenodd"></path></svg></td>
<td>
<a class="css-truncate-target js-navigation-open js-tree-finder-path" href="/bitcoin-dot-org/bitcoin.org/blob/master"></a>
</td>
</tr>
</tbody>
Возможно, можно ли устроить код, который использует тех местных жителей, чтобы быть сгенерированным как закрытие? Затем Вы могли
sub run_with_env {
my ($sub, @args) = @_;
no warnings 'uninitialized';
local %ENV = %ENV;
local $/ = $/;
local @INC = @INC;
local %INC = %INC;
local $_ = $_;
local $| = $|;
local %SIG = %SIG;
use warnings 'uninitialized';
$sub->(@args);
}
run_with_env(sub {
# do stuff here
});
run_with_env(sub {
# do different stuff here
});
Не уверенный, почему QuantumPete является downvoted, он, кажется, прав на этом. Вы не можете сказать local
инициализировать переменные в блоке вызова. Его функциональность является особенной, и инициализация/разрушение, что она делает только работы над блоком, куда она была выполнена.
существуют некоторые экспериментальные модули такой как Sub:: Uplevel и Devel:: RunBlock, которые позволяют Вам пытаться "одурачить" caller()
для подпрограмм или сделать 'возврат прыжка в длину' значений к более высоким стековым фреймам (соответственно), но ни один из них не делает ничего, чтобы влиять, как local
переменные обработок (я попробовал.:)
Поэтому на данный момент, действительно похоже, что необходимо будет жить с локальными объявлениями в объеме, где Вам нужны они.
Я не ужасно знаком с Perl, поэтому простите мне, если это на самом деле возможно. Но обычно, переменные, локальные для стекового фрейма, только доступны в том стековом фрейме. Вы не можете получить доступ к ним или от более высокого или от более низкого одно (если Вы не сделаете некоторую hacky адресную арифметику с указателями, но это, как никогда гарантируют, не успешно выполнится). Большие блоки объявлений переменной - к сожалению, что-то, с чем необходимо будет жить.
QuantumPete
perldoc perlguts говорит:
The "Alias" module implements localization of the basic types within
the caller's scope. People who are interested in how to localize
things in the containing scope should take a look there too.
FWIW. Я не посмотрел на Alias.pm достаточно тесно, чтобы видеть, насколько легкий это могло бы быть.
В TCL можно использовать uplevel. Что касается Perl, я не знаю.