async function clickByElement() {
let element = document.querySelector('.css-1swe2yf-DivActionContainer.esns4rh0 [aria-pressed="false"]');
if (!element) return null;
console.log('Клик!')
element.click();
while (element.getAttribute('aria-pressed') !== 'true') {
await new Promise(resolve => setTimeout(resolve, 100));
}
return true;
}
async function clickAllElements() {
let foundClickable = false;
while (await clickByElement() !== null) {
foundClickable = true;
}
return foundClickable;
}
async function scrollToBottomAndClickAgain() {
const scrollContainer = document.querySelector('.css-1qp5gj2-DivCommentListContainer.ekjxngi3');
if (scrollContainer) {
console.log('Крутим страницу и ждем 10 сек.')
let lastScrollTop = scrollContainer.scrollTop;
scrollContainer.scrollTop = scrollContainer.scrollHeight;
await new Promise(resolve => setTimeout(resolve, 10000));
if (scrollContainer.scrollTop !== lastScrollTop) {
if (await clickAllElements()) {
await scrollToBottomAndClickAgain();
} else {
console.log('Прокрутка выполнена, новые элементы для клика не найдены.');
}
} else {
console.log('Достигли конца прокрутки, больше нечего прокручивать.');
if (await clickAllElements()) {
await scrollToBottomAndClickAgain();
} else {
console.log('Задача окончательно завершена, кликов больше не осталось');
}
}
} else {
console.error('Контейнер для прокрутки не найден');
}
}
async function initiateClicksAndScroll() {
if (await clickAllElements()) {
await scrollToBottomAndClickAgain();
} else {
console.log('Нет элементов для начальных кликов, проверяем прокрутку');
await scrollToBottomAndClickAgain();
}
}
initiateClicksAndScroll().then(() => console.log('Задача выполнена май генерал!'));
.querySelectorAll()
..forEach()
..click()
.document.querySelectorAll('.CLASSNAME').forEach((el, i) => {
console.log(`Element №${i}, `, el);
el.click();
});
setTimeout(() => {
document.querySelectorAll('.CLASSNAME').forEach((el, i) => {
console.log(`Клик по элементу №${i}, `, el);
el.click();
});
}, 1000);
Как мне сделать так, чтобы мой сервис используя эти файлы запускался на https в контейнере
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["project.csproj", "."]
RUN dotnet restore "project.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "project.csproj" -c Release -o /app/publish
FROM build AS publish
RUN dotnet publish "project.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY ["cert.pem", "key.pem", "/https/"]
ENTRYPOINT ["dotnet", "project.dll"]
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options =>
{
options.ListenAnyIP(443, listenOptions =>
{
listenOptions.UseHttps("/https/cert.pem", "/https/key.pem");
});
});
Могу ли я установить ПО или ОС, а лицензию не ставить?
Какие подводные камни?
# Build Core lib
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS core-build
WORKDIR /src
COPY ["../Core/Core.csproj", "./Core/"]
RUN dotnet restore "./Core/Core.csproj"
COPY ["../Core/", "./Core/"]
RUN dotnet build "./Core/Core.csproj" -c Release -o /app/core
# Build API proj
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS api-build
WORKDIR /src
COPY ["Service/API/API.csproj", "./Service/API/"]
RUN dotnet restore "./Service/API/API.csproj"
COPY ["Service/API/", "./Service/API/"]
COPY --from=core-build /app/core /lib
RUN dotnet build "./Service/API/API.csproj" -c Release -o /app/service
# Create final image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=api-build /app/service .
ENTRYPOINT ["dotnet", "API.dll"]
в файловом менеджере на vps, где файлы самого next я нашел скрипт, который надо поменять, поменял его
Гугл подсказывает, что нужно прописать переменные среды. Вроде прописала, но все равно не запускается.
Не подскажете, в чем может быть проблема?
Могу ли я получить примерное значение максимально-возможного числа запросов и/или пользователей, которых сможет поддерживать мой Django сервер?
// functions.php or any plugin
function test($content) {
// Регулярка для поиска изображений
$pattern = '/<img[^>]+src="([^"]+)"[^>]+>/';
preg_match_all($pattern, $content, $m);
if (isset($m[1])) {
foreach ($m[1] as $i => $url) {
// Получаем url "полного" изображения
$full_url = preg_replace('/-\d+x\d+(\.\w+)$/', '$1', $url);
// Изменяем стандартный <img/> на <a><img/></a>
$r = '<a href="' . $full_url . '" target="_blank">' . $m[0][$i] . '</a>';
$content = str_replace($m[0][$i], $r, $content);
}
}
return $content;
}
add_filter('the_content', 'test');
Помогите разложить это по полочкам.
parent_div = product_description_more.find_element(By.XPATH, './..')
parent_div.click()
span[aria-label="Все характеристики"]
, а не на родителе выше, как это понять:Это должно быть что-то вроде робота, которые будет переходить от сайта к сайту по внутреннем ссылкам
или лучше сделать парсинг поисковой выдачи
(но как тогда сделать выдачу максимально разнообразной, ведь у меня нет конкретного поискового запроса?)?