克服在python中跨度的突破

时间:2018-01-30 23:05:15

标签: html string python-3.x list web-scraping

我使用以下代码来搜索网站。 '手机'是一个挑战。为了使它成功,我不得不使用find all,但更喜欢使用find。当我特意找它时,它会返回结果(我删除了电话号码):

        (###)### - ####      结果,我只能得到它而不返回任何其他东西,根本没有电话号码。 find_all至少返回电话号码,但后来我花了很多时间从列表中进一步清理它(这个数字并不一直落在-1索引中)HELP!

def BSassign(letters):
    BNameDict = {}
    for i in range(len(letters)):
        if letters[i].find(attrs = {'class': 'biz-name js-analytics-click'}) == None:
            break
        else:
           BNameDict[i] = {'name': letters[i].find(attrs={'class': 'biz-name js-analytics-click'}).text,
                           'phone': letters[i].find_all('span'),
                           'address': letters[i].find(attrs={'class': 'service-area'})}
    return BNameDict

1 个答案:

答案 0 :(得分:0)

这有点工作......最后它仍然有最终的html编码......但它已经世界上更好了。是的,我确实尝试使用13,14和15个字符索引长度的切片,它只返回一个空白。

def BSassign(letters):
    BNameDict = {}
    for i in range(len(letters)):
        if letters[i].find(attrs = {'class': 'biz-name js-analytics-click'}) == None:
            break
        else:
            Phones = str(letters[i].find_all('span'))
            thisisirritating = Phones.find('(')
            Phones = Phones[thisisirritating:]
            BNameDict[i] = {'name': letters[i].find(attrs={'class': 'biz-name js-analytics-click'}).text,
                            'phone': Phones,
                            'address': letters[i].find(attrs={'class': 'service-area'})}
    return BNameDict