import requests
from bs4 import BeautifulSoup
#url = 'https://www.goodreads.com/quotes'
#r = requests.get(url)
#soup = BeautifulSoup(r.content, 'html.parser')
html = """
<div class="quoteText">“Insanity is doing the same thing, over and over again, but expecting different results.” <br> ―
<span class="authorOrTitle">Narcotics Anonymous</span>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
quotes = soup.find_all('div', {'class': 'quoteText'})
for quote in quotes:
if quote.text is not None:
quote_ = quote.text
quote_data = quote_.split(" ―")
quote_without_author = quote_data[0]
quote_author = quote_data[1]
print(quote_without_author.strip())
print(quote_author.strip())
Вы можете разделить данные на -, поэтому элемент [0] - ваша цитата, [1] - ваш автор.
Выход:
“Insanity is doing the same thing, over and over again, but expecting different results.”
Narcotics Anonymous
Я думаю, что Вы на правильном пути с Отражательной идеей.
Так как у Вас, вероятно, есть обертка вокруг операций XML так или иначе, Вы могли взять в целевом объекте, обычно делать десериализацию в новый объект, затем делать что-то подобное клонированию путем копирования один за другим только свойств, содержащих значения не по умолчанию.
Не должно случаться так, что комплекс для реализации этого, и это будет смотреть на потребителей от остальной части приложения точно так же, как оперативная десериализация.
В основном Вы не можете. XmlSerializer
строго конструктивно. Единственная интересная вещь можно сделать для настройки XmlSerializer
должен реализовать IXmlSerializable
и сделайте все сами - не привлекательная опция (и она все еще создаст новые экземпляры с конструктором по умолчанию, и т.д.).
xml
строгое требование? Если можно использовать другой формат, protobuf-сетевые поддержки, объединяющие фрагменты в существующие экземпляры, так же просто как:
Serializer.Merge(source, obj);
Я поразил ту же проблему несколько недель назад.
Я поместил метод, Десериализовывают (строка сериализировала форму) в интерфейсе ISelfSerializable, который реализовал мой класс объекта. Я также удостоверился, что интерфейс вынудил класс иметь конструктора по умолчанию.
На моей фабрике я создал объект того типа и затем десериализовал строку в него.