python周末吃什么_中午不知道吃什么?用Python爬取美团外卖评论帮你选餐!

分析url的网页源代码,在源代码里有我们想要的评论数据,我们可以用正则(在这里正则还是比较好用的)把我们想要的信息弄下来

开启循环,批量抓取

保存数据至文本和数据库

defparse_one_page(html):

pattern2 = re.compile( '"m_type":"0",(.*?),"username"', re.S)

items=re.findall(pattern2,html)

foritem initems:

item = "{"+ item + "}"

item=json.loads(item)

write_to_file(item)

print(item)

save_to_mongo(item)

#皮皮哥告诉了我他的独家正则匹配方法可以匹配出来,这样的确获得的item没有编码问题

defparse_one_page(html):

pattern = '"content":".*?"'

items=re.findall(pattern,html)

foritem initems:

item =eval(item.split( ':', 1)[ 1])

write_to_file(item)

print(item)

save_to_mongo(item)

#对一般正则写法获得的item进行的方法,这是从皮皮哥那里得知的,亲测有效

defparse_one_page(html):

pattern = re.compile( 'rsion_name".*?"content":(.*?),"username"', re.S)

items=re.findall(pattern,html)

#print(items)

foritem initems:

item = item.encode( 'utf-8').decode( 'unicode_escape')

write_to_file(item)

print(item)

save_to_mongo(item)

三、代码

#config.py

MONGO_URL= 'localhost'

MONGO_DB= 'meituan'

MONGO_TABLE= 'meituan'importrequests

fromrequests.exceptions importRequestException

importjson

importre

fromday31.config import*

importpymongo

client=pymongo.MongoClient(MONGO_URL)

db=client[MONGO_DB]

base_url= 'http://comment.mobilem.360.cn/comment/getComments?callback=jQuery17209056727722758744_1502991196139&baike=%E7%BE%8E%E5%9B%A2%E5%A4%96%E5%8D%96+Android_com.sankuai.meituan.takeoutnew&start='

defthe_url(url):

try:

response = requests.get(url)

ifresponse.status_code== 200:

response.encoding= 'utf-8'

returnresponse.text

returnNone

exceptRequestException:

print( '请求出错')

returnNone

defthe_total():

html=the_url(base_url)

pattern1 = re.compile( '"total":(.*?),"messages"', re.S)

Total = re.findall(pattern1, html)

Total=int( ':'.join(Total))

#print(type(Total))

show= '总计评论%d条'%Total

print(show)

write_to_file(show)

returnTotal

defparse_one_page(html):

pattern2 = re.compile( '"m_type":"0",(.*?),"username"', re.S)

items=re.findall(pattern2,html)

foritem initems:

item = "{"+ item + "}"

item=json.loads(item)

write_to_file(item)

print(item)

save_to_mongo(item)

defsave_to_mongo(result):

try:

ifdb[MONGO_TABLE].insert(result):

print( '储存到MongoDB成功',result)

exceptException:

print( '储存到MongoDB失败',result)

defwrite_to_file(content):

withopen( 'meituan_result.text', 'a',encoding= 'utf-8') asf:

f.write(json.dumps(content,ensure_ascii= False)+ 'n')

f.close()

defmain():

Total=the_total()

Total=int(Total/ 10)+ 2

fori inrange(Total):

url = base_url + str(i* 10)

ifthe_url(url)!= None:

html=the_url(url)

parse_one_page(html)

else:

print( '输完啦')

ps= 'PS:因为有些评论空,所以实际评论比抓取的少'#这是我瞎猜的

write_to_file(ps)

print(ps)

if__name__ == '__main__':

main()

四、最后得到的数据视图和文件

五、总结

1.程序报错很正常,不要一报错就问别人,先自己思考、百度

2.在数据类型处理方面的知识还要加强

3.感谢皮皮哥、感谢姚文峰前辈!

作者:1想得美

链接:http://www.jianshu.com/p/25c8b4cfda1a

作者:1想得美

链接:http://www.jianshu.com/p/25c8b4cfda1a

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467906.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5类主题词汇(3)

道德价值 business ethics商业道德 professional ethics个人道德 virtue美德 moral value道德价值 improve public morals改进社会风气 safeguard public morals维护社会风气 injure public morality损害公共道德 fight against piracy抵制盗版 observe/obey the laws守法 be …

进阶攻略|前端最全的框架总结

前端的技术日渐更新,最近得空,花了一上午的时间,将前端常见的UI框架总结了一下,在开发的过程之中,有了这些,不断能够提高自己的工作效率,还可以在工作之余了解更多。希望大家喜欢。1.Layui官方网…

你知道char *s和char s[]的区别吗?

在一个夜深人静的晚上,有一个读者给我发了一个C语言题目。他问我,发哥,帮我看看这个代码有什么问题。我看了代码之后,心里一阵恐慌。我自认为我不是C语言高手。但我确实是一个喜欢解决问题的男人。就是在这样的背景驱使下&#xf…

5类主题词汇(4)

求职就业类 unemployment失业 job-hunting找工作 position职位 job resume就业简历 job interview工作面试 job prospects职业背景application letter求职信 the want ads招聘工作 fill in/out application form填写申请表 accept/take the post接受职位 take over the post接…

python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!

导语今天我们将制作一个连连看小游戏,让我们愉快地开始吧~开发工具Python版本:3.6.4相关模块:pygame模块;以及一些Python自带的模块环境搭建安装Python并添加到环境变量,pip安装需要的相关模块即可。先睹为快在cmd窗口…

上Google Adsense个人的一点体验

最近我想开通一个Google Adsense帐号,因为以前注册过一个Google帐号,所以我以为两个是可以共通的,因为很久没上Google帐号,我记不太清密码了,所以我先是登录了Google,登上去了,密码没记错。然后…

通俗易懂,嵌入式Linux驱动基础

前言上一篇分享的:《从单片机工程师的角度看嵌入式Linux》中有简单提到Linux的三大类驱动:我们学习编程的时候都会从hello程序开始。同样的,学习Linux驱动我们也从最简单的hello驱动学起。驱动层和应用层 还记得实习那会儿我第一次接触嵌入式…

记,我在深圳买房

今天晚上,有点时间,把这次买房的经历写下来。我并不是想炫耀,也不是想说明什么,只是为了记录自己的生活。这是对自己的一个阶段性总结,也希望自己的意见和想法对读者们有些帮助。再者,凭自己的努力&#xf…

tif 高程_使用ArcGIS提取高程点

地球表面形状的最常见数字化数据便是基于像元的数字高程模型(DEM),该数据可用作量化地表特征的输入。DEM属于一种连续表面的栅格制图表达,通常参考真实的地球表面,有的时候除了需要DEM还需要高程点,这里讲解一下如何使用ArcGIS从D…

《三毛。。。。》烂漫

(初衷)三毛,一个家喻户晓的人物,可她毕竟还不是流浪的三毛,她有深爱她的丈夫,父母,堂哥。。。。 (概述)本书介绍了三毛的人生遭遇,三毛还将自己的人生体验写成…

5类主题词汇(5)

日常应用类 complaint投诉 lodge the complaint投诉 fake products假冒产品 apply for 申请 apologize for 道歉 heartfelt welcome由衷地欢迎 letter of recommendation推荐信 decline a job offer婉拒工作机会 heartiest congratulation最衷心的祝贺 a farewell letter告别信…

你试试用心呼吸

我曾经历过掉水里,两次。第一次,是在水上乐园,不会游泳的我,从高滑梯上头朝下扎到水中。一下子,就感觉呼吸不了,非常惊恐,然后有人(救生员)揽住了我,我非常惊…

cython python3_30倍!使用Cython加速Python代码

原标题:30倍!使用Cython加速Python代码作者:George Seif、Thomas Wolf、Lukas Frei编译:116 | 公众号海外部前言你可能经常会一次又一次地听到关于Python的抱怨,Python跑起来太慢了!与许多其他编程语言相比…

Git安装及密钥的生成并上传本地文件到GitHub上

之前用的GitHub,不太熟练,一直在上传的过程中遇到了一些问题,看了网上诸多教程,总觉得很乱,特参考一些资料,总结了一篇完整的操作步骤,从下载安装到上传文件,亲测有效1.下载Git软件&…

100条常用写作谚语(1)(2)(3)(4)

文章目录勤奋 意志与成功学习方法与态度健康与心态品行与操守勤奋 意志与成功 where there is a will,there is a way有志者事竟成 No pains,no gains没有付出没有收获 Constant dropping wears away a stone水滴石穿,绳锯木断 Care and dil…

声明为数组定义为指针,声明为指针定义为数组

导语在这里我们做种强调的是在两个文件中,定义为数组声明为指针和定义为指声明为数组的这辆中情况。那么我们就需要两个源文件test.c和main.c。定义为数组,声明为指针test.cchar arr[] "abcdef";main.c#define _CRT_SECURE_NO_WARNINGS 1 #in…

100条常用写作谚语(5)(6)(7)(8)

文章目录金钱与财富珍惜时光择友与友谊常理与法则金钱与财富 Gold will not buy anything黄金不能买一切 The chief aim of man is not to get money 人的主要目的不是赚钱 The money the miser hoards will do him not good 守财奴积财,对自己毫无好处 What is we…

python中内置的集成开发工具_python应用(3):启用集成开发工具pycharm

之前写了个python程序给自己用,写代码时用的是macvim(vim的一种),macvim是个编辑工具,由于我已经设置过对python等各种语言的支持特性,所以什么缩进、对齐、高亮之类的表现都有,写起代码来非常舒服。可是,不…

python selenium环境配置Firefox和Chrome

1、下载Selenium库,可以使用pip install selenium https://pypi.python.org/pypi/selenium/ 2、下载驱动 Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads Firefox: https://github.com/mozilla/geckodriver/releases 3、配置环境变量 需要…

BUG_ON()、panic()、dump_stack()几种内核调试手段

Linux内核有一些方法可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。这些声明会导致 oops跟硬件的体系结构是相关的。大部分体系结构把BUG()和BUG_O…