首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >美汤加工

美汤加工
EN

Stack Overflow用户
提问于 2015-03-23 19:27:31
回答 1查看 115关注 0票数 2

我试图从http://www.indiacom.com/yellow-pages/travel-agencies-and-services/取消不同旅行社的名称和评级--这是我的代码

代码语言:javascript
复制
    from bs4 import BeautifulSoup
    import requests
    url="http://www.indiacom.com/yellow-pages/travel-agencies-and-services/"
    r=requests.get(url)
    soup=BeautifulSoup(r.content)
    links=soup.find_all("a")
    #for link in links:
     #   if"http" in link.get("href"):
      #      print("<a href='%s'>%s</a>"%(link.get("href"),link.text))
    L=[]
    g_data=soup.find_all("div",{"class": "Info_listing"})
    for item in g_data:
        L.append(item.contents[3].text)
       # L.append(item.text)
    for index in L:
        print(index)
    #print(L[2])

我将名字和评级保存在一个list.Now中,我想根据评级进行排序。我如何做到这一点,因为如果一个人被评级,他们的评级会显示出来,但是如果某人没有被评级,它会“第一个打分”,所以我如何根据评分进行排序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-23 19:35:58

迭代列表,构建包含列表名称和评级的元组列表。使用sorted()按评等值进行排序。将Be The First To Rate视为0级:

代码语言:javascript
复制
from operator import itemgetter

listings = []
for item in soup.select("div.Details_listing"):
    name = item.a.text
    rating = item.find('div', id='total_ratings_details').text
    rating = 0 if rating.startswith('Be The First To Rate') else float(rating.split(' ')[0])

    listings.append((name, rating))

print sorted(listings, key=itemgetter(1))

指纹:

代码语言:javascript
复制
[
    (u'Jasvinder Tours And Travels', 0),
    ...
    (u'The Royal Tours & Travels', 2.9), 
    (u'Preeti Travels & Transport', 4.4)
]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29218725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档