【问题标题】:How to scrape specific text in <p> elements with Python 3如何使用 Python 3 抓取 <p> 元素中的特定文本
【发布时间】:2020-04-21 20:15:42
【问题描述】:

我知道如何抓取整个 p 元素,但我想将位置的所有三个部分放在不同的类别中。我计划通过单独抓取它们并将它们单独放入一个 csv 文件来做到这一点。

这是带有示例位置的 Html:

<p>
70 Donald E Hiltz Connector Road
<br>
Kentville, NS
<br>
B4N 3V7
</p>

【问题讨论】:

  • 试试.split("&lt;br&gt;")

标签: python html python-3.x web-scraping


【解决方案1】:

你的问题不是很清楚。

最好的解决方案是,如果您拥有该网站或如果 html 是您的,您可以将 id 放在 p 标签中并使用 Beautiful soups find(id="") 函数获取内容。 否则,您只能获取整个数据,并查看是否可以使用yourstring.split() 之类的字符串函数获取内容,如果您的数据一直像示例一样结构化,这可能很有用,因此您可以只使用单词及其序列。 很抱歉,由于我的声誉低,我无法发表评论,但如果你能更清楚地说明你如何抓取数据,以什么形式等等,那就更好了

【讨论】:

    【解决方案2】:

    这就是我的工作方式:

    from bs4 import BeautifulSoup
    
    html = '''<p> 70 Donald E Hiltz Connector Road <br> Kentville, NS <br> B4N 3V7 </p>'''
    
    soup =BeautifulSoup(html, 'html5lib')
    
    # replace `br` tag with pipe that we use to split data
    _ = [br.replace_with('|') for br in soup.find_all('br')]
    
    data = [text.strip() for text in soup.find('p').text.split('|')]
    
    print(data)
    

    结果

    ['70 Donald E Hiltz Connector Road', 'Kentville, NS', 'B4N 3V7']
    

    【讨论】:

      【解决方案3】:

      另一种解决方案。

      from simplified_scrapy import SimplifiedDoc,req,utils
      html = '''
      <p>
      70 Donald E Hiltz Connector Road
      <br>
      Kentville, NS
      <br>
      B4N 3V7
      </p>
      '''
      doc = SimplifiedDoc(html)
      texts = doc.p.getText('|').split('|')
      print (texts)
      

      结果:

      ['70 Donald E Hiltz Connector Road', 'Kentville, NS', 'B4N 3V7']
      

      这里有更多示例。 https://github.com/yiyedata/simplified-scrapy-demo/tree/master/doc_examples

      【讨论】:

        猜你喜欢
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-10
        • 2022-01-19
        • 1970-01-01
        • 1970-01-01
        • 2019-02-07
        相关资源
        最近更新 更多