3

我无法通过 onclick 属性解析以仅获取选定的值。这是 onclick 属性

onclick="try{appendPropertyPosition(this,'B10331465','9941951739','','Dealer','Murugan.N');jsb9onUnloadTracking();jsevt.stopBubble(event);}catch(e){};"

如何仅从此 onclick 属性中获取选定的值,例如(电话号码、''、'经销商'、'姓名')。这是我的代码。

from bs4 import BeautifulSoup
import urllib2
import re
url="http://www.99acres.com/property-in-velachery-chennai-south-ffid?"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
properties = soup.findAll('a', title=re.compile('Bedroom'))
for eachproperty in properties:
 print "http:/"+ eachproperty['href']+",", eachproperty.string, eachproperty['onclick']

更新

我只想从上述onclick属性中获取一个电话号码,尽管有很多。

例如,现在我得到

Y10765227, 9884877926, 9283183326,, Dealer, Rgmuthu
L10038779, 9551154555, ,, ,
R10831945, 9150000747, 9282109134, 9043728565, ,, ,
B10750123, 9952946340, , Dealer, Bala
R10763559, 9841280752, 9884797013, , Dealer, Senthil

这是我通过使用以下代码得到的

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

我正在尝试以仅检索一个电话号码而其余电话号码消失的方式进行修改。它应该看起来像这样

    Y10765227, 9884877926, Dealer, Rgmuthu
    L10038779, 9551154555
    R10831945, 9150000747
    B10750123, 9952946340, Dealer, Bala
    R10763559, 9841280752, Dealer, Senthil

我正在尝试使用

re.findall("'([a-zA-Z0-9,\s]*)'", (re.sub(r'([^,]+,[^,]+,)(.*?)([A-Za-z].*)', r'\1\0',a['onclick']) if a else ''))

但这似乎不起作用。

4

1 回答 1

4

您可以使用正则表达式来获取数据onclick

properties = soup.findAll('a', title=re.compile('Bedroom'))
for eachproperty in properties:
    print re.findall("'([a-zA-Z0-9,\s]*)'", eachproperty['onclick'])

印刷:

['Y10765227', '9884877926, 9283183326', '', 'Dealer', 'Rgmuthu']
['L10038779', '9551154555', ',', ',']
['R10831945', '9150000747, 9282109134, 9043728565', ',', ',']
['B10750123', '9952946340', '', 'Dealer', 'Bala']
['R10763559', '9841280752, 9884797013', '', 'Dealer', 'Senthil']
...

希望有帮助。

于 2013-09-04T14:50:10.817 回答