在之前的文章中,笔者有提到,我们要在实践中去学习python,笔者有天就想着要不要爬点东西呢,跃跃欲试的节奏啊,想来想去,想到美团了,那么首先笔 者想给自己确定一个目标,就是我要爬什么样的数据,我要爬美团的哪些东西。笔者首先确定了笔者想要爬去的界 面,http://bj.meituan.com/。就是美团网在北京的团购首页,获取首页的团购,团购项目的介绍,团购售价,销量。 1.首先确定要用的模块,<1.>urrlib,os,re三个模块, 2.要想获得数据,并且一一对应起来,那么用到循环的嵌套(一开始卡壳,后来咨询得到启发), 3.获取网页的所有数据,爬去下来 4.分析这些想要或许的模块怎么找出来, 5.找出相对于的正则来匹配, 6.获取数据,并且找到对应的数值 7.利用循环,并且配合字典的使用,将数据完整的获取下来, 8.保存到相应的文档中 9.关闭文档, 10.提示数据保存成功,结束爬去。 由于这是第一次采取这么多的信息,之前只是爬个图片啥的,所以笔者还是十分小心的去审查每一个元素,在这里推荐利用火狐浏览器,感觉是真的好用使用Firebug插件审查元素。
查看元素后,可以获得这个网站的编码形式是utf-8,这对于我们爬取数据也是关键的。 在一开始呢,笔者还打开了一款软件,fiddler,抓包
这些信息还是很多的,由于笔者截图的时候碰到了网络的原因,但是笔者还是找到了自己想要的信息,这样可以在自己的代码中加入伪装浏览器的信息,那么接下来要做的事情就是定位我们想要找的数据。
分析首页的团购信息,我们可以根据多个来确认这个信息的唯一标识符,<span>标签中并且有class="xtitle"< /span>中间文字,那么我们的正则表达式就出来了,r'<span class="xtitle">(.+?)</span>'(正则太难,笔者一个个试出来的)
描述也是<span>标签并且 class="short-title",</span>的文字,那么很快就匹配到了,正则出来了,r'class="short-title">(.+)</span>' 后面的就是依次类推。完成这个,那么我们就开始写我们的爬虫程序,导入我们想要用的模块,定义我们想要用的变量。爬去,匹配,然后循环得出来我们的结果,写入文档。代码如下 #作者:雷子 #qq:952943386 #邮箱:leileili126@163.com #欢迎大家来点评,有问题可以进行沟通 import urllib.request import os import re file=open(r'meituancde.txt','w') url="http://bj.meituan.com/" headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:47.0) Gecko/20100101 Firefox/47.0"} req=urllib.request.Request(url,headers=headers) response = urllib.request.urlopen(req) html = response.read().decode("utf-8") title_reg=r'<span class="xtitle">(.+?)</span>' #匹配团购 jianjie_reg=r'class="short-title">(.+)</span>' #匹配团购简介 sellnum_reg=r'<strong class="num">(.+)</strong>' #销售的数量 pire_reg=r'<strong>(.+)</strong>' #团购的售价 title_list = re.findall(title_reg,html) jianjie_list=re.findall(jianjie_reg,html) sellnum_list=re.findall(sellnum_reg,html) pire_list=re.findall(pire_reg,html) meitu={} i = 0 for title in title_list: meitu['团购'] =title_list[i] for jianjie in jianjie_list: meitu['简介']=jianjie_list[i] for sellum in sellnum_list: meitu['销量']=sellnum_list[i] for pire in pire_list: meitu['美团售价']=pire_list[i] i+=1 print(meitu) if len(meitu) !=0: file.write(str(meitu)) file.write("\n") file.close print("写入正确")代码 百度云
转载于:https://www.cnblogs.com/leiziv5/p/5697655.html
相关资源:采集美团商家信息爬虫