bs4无法选择预期的文本字符串?

时间:2016-10-05 21:56:35

标签: regex python-3.x web-scraping bs4

我想使用bs4提取文章发布日期,因为报纸模块有时会起作用,而在其他场合则不会。

例如,网址为http://www.popsci.com/ups-tests-drone-deliveries-to-island

from bs4 import BeautifulSoup
import urllib.request

page = urllib.request.urlopen(url)
soup = BeautifulSoup(page, 'lxml')

#print (soup.prettify())
date = soup.find('span', {'class':"date"})
print (date)

这将显示以下信息。

<span class="date" data-timestamp="1474907692"><span class="label">posted</span> Sep 26th, 2016 at 12:34pm</span>

我只需要 2016年9月26日下午12:34 部分。

所以,我试过了,

date = soup.find('span',{'class':"date"}, text=(re.compile("Sep")))

但是,这只会返回

我相信我在这里错过了一些东西,但不知道错在哪里。 有人可以帮助我指导我应该解决的问题吗?

1 个答案:

答案 0 :(得分:0)

怎么样:

date = soup.find('span', {'class':"date"}).text.replace("posted ", "")
# 'Sep 26th, 2016 at 12:34pm'

您可能希望将其包装到某个try/catch块中以使其更安全。