【问题标题】:format text obtained from beautiful soup in python格式化从python中美丽的汤中获得的文本
【发布时间】:2019-06-15 12:56:51
【问题描述】:

我用了漂亮的汤,并提取了一些 html,结果是:

print(e)
<p class="top-half listing-results-marketed">
<small>
                                Listed on 
18th Jan 2017


                            by
                    </small><br/>
<span>xxx Agents</span>

我只想提取日期和地产代理。

为了提取代理,我使用了:

print(e.span.text)
xxx Agents

为了提取数据,我使用:

print(e.small.text.strip())

最终得到:

Listed on 
18th Jan 2017


                            by

我是 python 正则表达式的新手,不确定如何仅提取日期部分。有什么建议么?

使用的代码:

from bs4 import BeautifulSoup as soup
import requests
from datetime import datetime
import pandas as pd
url='https://www.zoopla.co.uk/for-sale/property/petts-wood/?page_size=100'

req=requests.get(url)
page_soup = soup(req.content,'html.parser')

containers = page_soup.findAll('div',{'class':'listing-results-wrapper'})

e=containers[0].find('p',{'class':'top-half listing-results-marketed'})  

【问题讨论】:

    标签: python html regex text


    【解决方案1】:

    试试这个:

    import re
    
    span_text = 'Listed on 18th Jan 2017                            by'
    p = re.compile(r"[1-9]{1,2}[a-z]{2} [A-Z]{1}[a-z]{2} [0-9]{4}")
    result = p.findall(span_text)
    
    print(result)
    
    #Output ['18th Jan 2017']
    

    regexr 这样的网站非常适合学习正则表达式。

    【讨论】:

    • 喜欢这个链接,因为我已经玩了一段时间了。 python 是否完全遵循 perl?
    【解决方案2】:

    要将日期字符串解析为datetime对象,可以使用re模块和datetime.strptime函数(doc):

    data = '''
    <p class="top-half listing-results-marketed">
    <small>
                                    Listed on
    18th Jan 2017
    
    
                                by
                        </small><br/>
    <span>xxx Agents</span>'''
    
    from bs4 import BeautifulSoup
    from datetime import datetime
    import re
    
    soup = BeautifulSoup(data, 'lxml')
    
    time_data = re.findall(r'(\d+).*?\s+([A-Za-z]+)\s+(\d{4})', soup.select_one('small').text)[0]
    d = datetime.strptime(' '.join(time_data), '%d %b %Y')
    print(d)
    

    打印:

    2017-01-18 00:00:00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 2018-09-04
      • 1970-01-01
      • 2011-11-15
      • 2013-12-29
      • 2012-02-17
      • 2015-03-27
      相关资源
      最近更新 更多