Драматург на Python: использование :text-matches() с регулярным выражением без учета регистра для сопоставления именPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Драматург на Python: использование :text-matches() с регулярным выражением без учета регистра для сопоставления имен

Сообщение Anonymous »

Я пытаюсь найти конкретные имена в HTML-коде веб-сайта с помощью Playwright на Python. У меня есть список имен в нижнем регистре (

Код: Выделить всё

names_to_find
), и я хочу сопоставить их с именами в HTML, которые могут содержать дополнительный текст или разные регистры (например, Херес-де-ла-Фронтера).
Когда Я использую :has-text() или :text() и получаю неправильные совпадения, поскольку некоторые элементы HTML содержат дополнительный текст вокруг имени. Я не могу использовать :text-is(), потому что он чувствителен к регистру. Итак, я подумал, что :text-matches("regex", "i") будет идеальным, но он не возвращает никаких результатов.
Ниже приведена упрощенная версия. моего кода:

Код: Выделить всё

import re
from playwright.async_api import async_playwright

names_to_find = ['almería', 'cádiz']

async def fetch_geojson(page, names_to_find):
results = {}

while names_to_find:
for name in names_to_find[:]:
# Pattern for exact word boundary, case-insensitive
pattern = rf"\b{re.escape(name)}\b"
name_found = page.locator(f'td[data-label="nameunit"]:text-matches("{pattern}", "i")').first

if await name_found.count() > 0:
print(f"{name} found!")
# Example placeholder for data storage
results[name] = "GeoJSON_data_placeholder"
names_to_find.remove(name)
await page.goto("https://example.com")  # Reset for the next iteration

return results

async def main():
async with async_playwright() as p:
browser = await p.chromium.launch()
page = await browser.new_page()
geojson_results = await fetch_geojson(page, names_to_find)
await browser.close()
Проблема:
Когда я запускаю этот код, :text-matches() не возвращает результат. никаких результатов, даже если я ожидаю, что он будет соответствовать именам (без учета регистра и с точными границами слов).
Как я могу настроить код для получения правильных совпадений, или есть ли лучший способ подход для выполнения сопоставления регулярных выражений без учета регистра для текста в Playwright?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/791 ... x-for-matc
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»