爬取大众点评22页餐馆名称

首先,装入requests库和beautiful soup

import requests
from bs4 import BeautifulSoup

先爬取第一页的数据,将初始url设置为搜索页的第一页:http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E

start_url = 'http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E'

然后通过chrome的检查功能,找到网页的对应的user-agent 和host,按照这个headers 来修改requests的请求头部;如果网速慢的话,就不要设置timeout参数了。

headers = {
    'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
}


r = requests.get(start_url, headers = headers )

通过请求,获得服务器的反馈。然后使用美丽汤,将r.text 做成汤,便于后续的数据查找;

soup = BeautifulSoup(r.text,'html.parser')

做成汤之后,使用美丽汤的find_all函数:观察原网页的html代码发现,所有店名都在h4的标签中,因此利用美丽汤的find_all函数,找到所有标签为h4的对象,获得一个返回的列表。

name_list = soup.find_all('h4')

将列表打印出来之后发现,有一些不需要的内容页在其中,因此对列表进行切片,最后获得的列表只有店铺的名称和tag。

i in name_list:
    print(i)
for i in name_list:
    print(i)

#打印结果

频道:

分类:

地点:

Tomacado花厨(朝阳大悦城店)

局气(大悦城店)

马路边边串串香(朝阳大悦城店)

外婆家(朝阳大悦城店)

食久记(帝都直营店)

大渔铁板烧(朝阳大悦城店)

喜茶(朝阳大悦城店)

椒战(朝阳大悦城店)

火炉火烤肉·芝士排骨(朝阳大悦城店)

绿茶餐厅(朝阳大悦城店)

Merci French Food by TRB

胖哥俩肉蟹煲(朝阳大悦城店)

煎烤侠齐齐哈尔烤肉

蟹的岡田屋(朝阳大悦城店)

妈妈的味道(朝阳大悦城店)

商户没有被收录?

遇到什么问题?

new_name_list = name_list[3:-2]
print(new_name_list)

#新的结果
[

Tomacado花厨(朝阳大悦城店)

,

局气(大悦城店)

,

马路边边串串香(朝阳大悦城店)

,

外婆家(朝阳大悦城店)

,

食久记(帝都直营店)

,

大渔铁板烧(朝阳大悦城店)

,

喜茶(朝阳大悦城店)

,

椒战(朝阳大悦城店)

,

火炉火烤肉·芝士排骨(朝阳大悦城店)

,

绿茶餐厅(朝阳大悦城店)

,

Merci French Food by TRB

,

胖哥俩肉蟹煲(朝阳大悦城店)

,

煎烤侠齐齐哈尔烤肉

,

蟹的岡田屋(朝阳大悦城店)

,

妈妈的味道(朝阳大悦城店)

]

 

成功爬取第一页之后,我们准备开始爬取之后的所有页面。在大众点评点击翻页之后,观察发现,第二页的url是在第一页的基础之上增加了/p2,第三页的是增加了/p3,以此类推,一共有22页。

比如:第二页的url:http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p2

发现了url的翻页模式之后,就可以通过循环来自动修改url,然后重复上面同样的步骤进行爬取:

url_list = []
for i in range(22):
    a = i + 1
    item = start_url + '/p' + str(a)
    url_list.append(item)

#检查url是不是都正确
for item in url_list:
    print(item)


#发现都获得了正确的url
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p1
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p2
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p3
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p4
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p5
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p6
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p7
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p8
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p9
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p10
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p11
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p12
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p13
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p14
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p15
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p16
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p17
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p18
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p19
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p20
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p21
http://www.dianping.com/search/keyword/2/10_%E6%9C%9D%E9%98%B3%E5%A4%A7%E6%82%A6%E5%9F%8E/p22

爬取第一页到第二十二页的店铺名称:

page = 0
for url in url_list:
    page = page + 1
    r = requests.get(url, headers = headers)
    soup = BeautifulSoup(r.text, 'html.parser')
    shop_list = soup.find_all('h4')
    shop_list = shop_list[3:-2]
    print('这是大众点评的第' + str(page) + '页') 
    for name in shop_list:
        print(name)
    print()

输出的部分结果如下:

这是大众点评的第1页

Tomacado花厨(朝阳大悦城店)

局气(大悦城店)

马路边边串串香(朝阳大悦城店)

外婆家(朝阳大悦城店)

食久记(帝都直营店)

火炉火烤肉·芝士排骨(朝阳大悦城店)

大渔铁板烧(朝阳大悦城店)

很久以前羊肉串(石佛营店)

喜茶(朝阳大悦城店)

绿茶餐厅(朝阳大悦城店)

胖哥俩肉蟹煲(朝阳大悦城店)

蟹的岡田屋(朝阳大悦城店)

大福龙虾烧烤(青年路店)

Merci French Food by TRB

奈雪の茶(朝阳大悦城店)

这是大众点评的第2页

妈妈的味道(朝阳大悦城店)

温野菜日本涮涮锅(朝阳大悦城店)

椒战(朝阳大悦城店)

很高兴遇见你(朝阳大悦城店)

撒椒(朝阳大悦城店)

食之六七·面(朝阳大悦城店)

猫小院猫主题餐厅(大悦城店)

煎烤侠齐齐哈尔烤肉

苏帮袁Sue Cuisine(朝阳大悦城店)

TIAGO SELECT(朝阳大悦城店)

KEAAMI THAI by TIAGO(朝阳大悦城店)

云海肴云南菜(朝阳大悦城店)

行运打边炉(慈云寺店)

鳗鳗的爱(朝阳大悦城店)

牛角日本烧肉(朝阳大悦城店)

这是大众点评的第3页

薛蟠烤串(朝阳大悦城店)

呷哺呷哺(朝阳大悦城店)

街头烤牛肉(青年路店)

潮堂(朝阳大悦城店)

左庭右院鲜牛肉火锅(朝阳大悦城店)

麻小丨麻辣诱惑(朝阳大悦城店)

巴依老爷新疆美食(大悦城店)

伽谷蘭じゃぐら居酒屋(国美店)

蛙小侠(朝阳大悦城店)

西贝莜面村(朝阳大悦城店)

杨记兴·臭鳜鱼(朝阳大悦城店)

唐宫海鲜舫(朝阳大悦城店)

根娃子美蛙鱼头地道成都火锅(青年路店)

比格比萨(朝阳大悦城店)

度小月(朝阳大悦城店)

。。。 这是大众点评的第22页

辣雪吃货运营中心

鲜女米线凉皮

萝拉制果(朝阳大悦城)

DEAR-DEER

伊兰朵意大利冰淇淋(朝阳大悦城店)

苏雅汇茶坊

芸溪生态

六个苹果农产品直营店(天鹅湾店)

 

你可能感兴趣的:(Python)