Если у вас длинный список, я бы предложил два подхода:
Первое решение:
Добавить все данные во временную таблицу:
CREATE TEMP TABLE lng_list(image_address);
-- Insert all you elements in lng_list table
-- ...
DELETE FROM images WHERE image_address NOT IN (SELECT image_address FROM lng_list);
Обязательно используйте эту внутреннюю транзакцию, чтобы получить хорошую производительность.
Второе решение:
(УДАЛЕНО: работает только для IN
, а не NOT IN
...)
Производительность должна быть справедливой для любого из эти решения.
Правильный способ сопоставления этих тегов заключается в следующем:
result = soup2.findAll('meta', content=True, attrs={"name": "description"})
Однако html.parser
неправильно анализирует теги <meta>
. Он не осознает, что они самозакрывающиеся, поэтому он включает в себя большую часть остальной части <head>
в результате. Я изменил на
soup2 = BeautifulSoup(page2.content, 'html5lib')
, а затем результат поиска был:
[<meta content="46.3m Likes, 2.6m Comments - EGG GANG
Кажется, это работает:
for tag in soup2.findAll("meta"):
if tag.get("property", None) == "og:description":
print(tag.get("content", None))
По сути, вы перебираете все теги на странице и ищете те, для которых свойство имеет значение «og: description», которое выглядит как Откройте свойство Graph, которое вы хотите.
Помогает ли это?
Полная версия:
from bs4 import BeautifulSoup
import requests
url = "https://www.instagram.com/p/BsOGulcndj-/"
page2 = requests.get(url)
soup2 = BeautifulSoup(page2.content, 'html.parser')
result = soup2.findAll('meta', attrs={'content': 'description'})
for tag in soup2.findAll("meta"):
if tag.get("property", None) == "og:description":
print(tag.get("content", None))
Обновление : Что касается вашего вопроса о красивой печати, есть несколько способов, которые могут быть выполнены , Один из таких способов включает регулярные выражения и интерполяцию строк. Например:
likes = re.search('(.*)Likes', string).group(1)
comments = re.search(',(.*)Comments', string).group(1)
description = re.search('-(.*)', string).group(1)
print(f"{likes} Likes | {comments} Comments | {description}")
Но если у вас есть еще один вопрос по этому поводу, вероятно, это должно быть сделано в новом посте.