删除不必要的值 - 使用beautifulsoup进行抓取

时间:2013-09-16 13:42:49

标签: python-2.7 beautifulsoup screen-scraping

onclick="try{appendPropertyPosition(this,'B10016735','9176967671, 9176964646, 8939721171','44-22583703','Dealer','manesh');jsb9onUnloadTracking();jsevt.stopBubble(event);}catch(e){};"

像这样,HTML页面中有许多onclick个属性。

使用此代码从上面的onclick属性

join(re.findall("'([a-zA-Z0-9,\s]*)'", (a['onclick'] if a else '')))

我正在抓价值:

B10016735,9176967671, 9176964646, 8939721171,44-22583703,Dealer,manesh

但我只想拥有一个电话号码并删除其余三个电话号码,并且应该如下所示

 B10016735,9176967671,Dealer,manesh

更新

事实上,HTML页面中的所有行都不会重复以下模式 。很少有行有三个phonenos,很少有两个。有时零电话号码。所以电话号码的数量会有所不同。

B10016735,9176967671,9176964646,8939721171,44-22583703,经销商,manesh

2 个答案:

答案 0 :(得分:2)

给出字符串

In [101]: text = 'B10016735,9176967671, 9176964646, 8939721171,44-22583703,Dealer,manesh'

您可以将text拆分为:

In [102]: items = [item.strip() for item in text.split(',')]

选择前两项,最后两项:

In [103]: items[:2]+items[-2:]
Out[103]: ['B10016735', '9176967671', 'Dealer', 'manesh']

并使用以下内容形成所需的字符串:

In [104]: ','.join(items[:2]+items[-2:])
Out[104]: 'B10016735,9176967671,Dealer,manesh'

答案 1 :(得分:1)

>>> import re
>>> strs = 'B10016735,9176967671, 9176964646, 8939721171,44-22583703,Dealer,manesh'
>>> re.sub(r'([^,]+,[^,]+,)(.*?)([A-Za-z].*)', r'\1\3', strs)
'B10016735,9176967671,Dealer,manesh'