Python 如何从bs4结果中删除字符串?
编辑:好的,这是我正在使用的代码,usps追踪号码只有邮局的地址Python 如何从bs4结果中删除字符串?,python,html,python-2.7,web-scraping,beautifulsoup,Python,Html,Python 2.7,Web Scraping,Beautifulsoup,编辑:好的,这是我正在使用的代码,usps追踪号码只有邮局的地址 import requests from bs4 import BeautifulSoup url = "https://tools.usps.com/go/TrackConfirmAction.action?tRef=fullpage&tLc=1&text28777=&tLabels=03030130000309293695" s = requests.Session() s.headers['Use
import requests
from bs4 import BeautifulSoup
url = "https://tools.usps.com/go/TrackConfirmAction.action?tRef=fullpage&tLc=1&text28777=&tLabels=03030130000309293695"
s = requests.Session()
s.headers['User-Agent'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'
r = s.get(url)
soup = BeautifulSoup(r.text, "lxml")
for Status, Location, Time in map(None, soup.find_all("span", {"class":"info-text"}), soup.find_all("td", { "class":"location"})[1:], soup.find_all("td", { "class":"date-time"})):
print Time.get_text().strip()
这是我得到的输出
January 24, 2017
,
7:13 am
这就是我想要的样子
January 24, 2017,
7:13
这里还有我正在抓取的html
<td class="date-time">
<p>
January 13, 2017
,
2:09 pm
</p></td>
<td class="status">
2017年1月13日
,
下午2:09
默认情况下.strip()
方法仅去除空白,而在您的情况下,很可能会混合使用换行符和空白,要解决此问题,请尝试更改:
r = Status.get_text().strip().encode('utf-8')
# to
r = Status.get_text().strip(' \n').encode('utf-8')
'\n'
-由两个字符组成,一个空格和代表换行符的\n
。这些字符中的任何前导字符或后导字符都将被删除。最好显示一个状态
和位置
以及预期结果。如果要删除固定大小的文本,请使用切片text[start:end]
。或者使用拆分(“”,1)
拆分第一个空格上的文本rsplit(“”,1)
在最后一个空格上拆分(r
=右)。顺便说一句:如果你想删除同一个单词,你也可以使用replace()
。也许首先检查一下你用find_all()[1://code>得到了什么,以及你用map()
得到了什么-也许你不应该使用[1://code>,或者你期望太高了-你只有一个日期。最好创建最小的工作示例,以便我们可以运行它。现在我们帮不上忙了——我们无法读懂你的心思。