title: How to scrape individual paragraphs from SEC 10-Ks
body: <p>I am working on a project where I need to break up 10-Ks into their constituent paragraphs. For some 10-Ks I am able to do something simple like <code>soup.find_all('p')</code>, but I am also seeing other 10-Ks that use <code>&lt;div&gt;</code> for everything instead of <code>&lt;p&gt;</code> tags. Here are three different ways I am seeing companies declare paragraph breaks:</p>
  
  <p>Case where empty div tags are used to create create space between paragraphs:</p>
  
  <pre><code>&lt;div&gt;&lt;/div&gt;&lt;div&gt;Text of a paragraph&lt;/div&gt;&lt;div&gt;&lt;/div&gt;
  </code></pre>
  
  <p>Case where margins/padding are used on either the top or bottom to create space:</p>
  
  <pre><code>&lt;div style="padding-top: 10pt"&gt;Text of a paragraph&lt;/div&gt;`, `&lt;div style="margin-bottom: 10pt"&gt;&lt;/div&gt;
  </code></pre>
  
  <p>Case where the company uses <code>&lt;br&gt;</code> tags: </p>
  
  <pre><code>&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;Text of paragraph&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;
  </code></pre>
  
  <p>I have had to write new code for each of these three cases, and I am worried that there could be other ways of marking paragraphs that I haven't encountered yet. </p>
  
  <p><strong>QUESTION:</strong> Is there a package or method I can use to standardize all these different ways of declaring paragraph breaks, or should I continue to write code for each new case I encounter?</p>