内容简介:前两天国庆,朋友在看中国好声音,出于对周杰伦以及李健的喜爱,朋友想去鸟巢看10月7号的巅峰之夜,于是…我上了大麦网查看票价,但是出于职业病,不小心就按下了F12,就有了这个项目经过反复点击发现,大麦网在经过多次点击之后,会出现需要登录的情况,因此,通过这点分析,我们需要登录的cookie不愿意看代码的,可以直接跳过,看最后的总结
前两天国庆,朋友在看中国好声音,出于对周杰伦以及李健的喜爱,朋友想去鸟巢看10月7号的巅峰之夜,于是…我上了大麦网查看票价,但是出于职业病,不小心就按下了F12,就有了这个项目
言归正传,爬取大麦网
经过反复点击发现,大麦网在经过多次点击之后,会出现需要登录的情况,因此,通过这点分析,我们需要登录的cookie
老套路,直接上代码
不愿意看代码的,可以直接跳过,看最后的总结
import requests import json import csv class Spider(object): # 构造请求头等 def __init__(self): self.url = "https://search.damai.cn/searchajax.html" self.headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36", "cookie": "_uab_collina=153898386691021526720657; _umdata=70CF403AFFD707DFEB6BA57C56CA3B13E7BD5DAF561D420C384FF4DA75A62F56B2225CEC1DD4846FCD43AD3E795C914C46F57A339EDEC74F7006D0CE8CD77F14; x5sec=7b226d65632d67756964652d7765623b32223a226639303431366238343735643836656338393965393365656533303433646662434f3669374e3046454b2f666a7476302f7244356a41453d227d; cna=b0mIEx9fXWcCAQ6CznyYZjAe; cookie2=18204ab51d2bd14a7326dab901c58057; t=37103c62b8274bb5769837840f8b71a8; _tb_token_=36ed1e7aee13e; x_hm_tuid=PN4CfOch3fJ1yW4MpI+z3hZhs9u9ODTzpfGE7AtbNvax7kg+GG7r3wFIj/ihN/iG; _hvn_login=18; csg=6be6a003; munb=4199098224; damai.cn_nickName=MeisterLee; damai.cn_user=gz4HkAnuV3BDKOniG3I4tVZ2WybxgALVJu0CZ2Xkbi57+SBwd++X2SrBbVRAeGWUGxb2+Rjuqig=; damai.cn_user_new=gz4HkAnuV3BDKOniG3I4tVZ2WybxgALVJu0CZ2Xkbi57%2BSBwd%2B%2BX2SrBbVRAeGWUGxb2%2BRjuqig%3D; h5token=9ccd095300bc4588a090b771e8418b2b_1_1; damai_cn_user=gz4HkAnuV3BDKOniG3I4tVZ2WybxgALVJu0CZ2Xkbi57%2BSBwd%2B%2BX2SrBbVRAeGWUGxb2%2BRjuqig%3D; loginkey=9ccd095300bc4588a090b771e8418b2b_1_1; user_id=116768239; isg=BNfX8KBwQJVhx8QVBH4OF8nuZksr4qxma9qAKCkEQKYNWPSaMO1Azkg-vr5isIP2", "referer": "https://search.damai.cn/search.htm?ctl=%20%20%20&order=1&cty=" } self.data = { "cty": "北京", "ctl": "演唱会", "tsg": "0", "order": "1" } self.data_key = None # 构造IP代理(按需求开启) # proxies = { # "http": "http://47.93.56.0:3128", # "http": "http://39.135.24.12:80", # } # 请求url获取响应 def get(self): response = requests.post(url=self.url, headers=self.headers, data=self.data) # 测试 # print(response.text) return response # 解析数据 def parse(self): # 将字符串数据转换成字典数据 dict_data = json.loads(self.get().text) # 测试字典数据是否能解析出来 # print(dict_data["pageData"]["resultData"]) # 将需要的爬取的字典数据存储在变量中 need_spider_data = dict_data["pageData"]["resultData"] # print(need_spider_data) # 构造存储头列表,第一种方法 data_key = [] for item in need_spider_data[0]: data_key.append(item) # 打印测试 # print(data_key) self.data_key = data_key # # 第二种方法 # data_keys = need_spider_data[0].keys() # # # 打印测试 # print(data_keys) return need_spider_data # 保存为CSV数据 def save(self): # 构建属性列表 # list = ['actors', 'categoryname', 'cityname', 'description', 'price', 'pricehigh', 'showstatus', 'showtime', 'subcategoryname', 'venue', 'venuecity', 'verticalPic'] list = self.data_key # 此处出现保存,报错为缺少字段,因此追加一个字段 list.append('favourable') # 测试list print(list) # 数据 my_data = self.parse() # 测试 print(my_data) with open("damaiwang" + ".csv", "w", newline="", encoding='utf8') as f: # 传入头数据,即第一行数据 writer = csv.DictWriter(f, list) writer.writeheader() for row in my_data: writer.writerow(row) # # 保存为字典数据 # def save_dict(self): # with open("damaiwang", 'w', encoding='utf8') as f: # f.write(str(self.parse())) if __name__ == '__main__': spider = Spider() # spider.run() spider.parse() spider.save()
在代码中我做了相应的注释,代码还可以继续优化,这里使用的cookie是我自己登录之后的cookie,代码在使用过程中,需要换成自己的cookie
遇到的问题总结
- 这个爬虫相对来说,是最基础也是最简单的,但是难点在于,如果要对数据做数据分析,就大概率的得把数据转化成CSV格式的文件进行保存,虽然在公司中并不是这么操作(一般直接存进数据库),对于个人项目来说,存成本地的CSV格式的文件就必不可少了。
-
保存成CSV格式的文件有很多办法,首先,最愚蠢(大智若愚)的办法就是遍历数据,把数据用逗号隔开,这种办法虽然看起来非常愚蠢,但是,我不得不给一个中肯的评价,有时候,在数据杂乱无章的时候,这是唯一的解决办法(实话说,网上有很多办法解决格式转化问题,但数据是千奇百怪的,我们很难预知我们爬取到的数据长什么样子),这也是我目前还在探索的一个知识点,毕竟写程序最重要的还是解决问题,代码不能提高人工的生产率,要程序何用?
-
言归正传,这里我调用了 Python 的内置库——CSV,感兴趣的伙伴可以上网查看一下这个库的其他用法,这里我个人觉得能解决一时的问题,但终归不是一个长久之计
over~ peace~
个人博客地址:www.limiao.tech
公众号:TechBoard
以上所述就是小编给大家介绍的《爬虫实战——大麦网》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mathematica演示项目笔记
吴飞 / 清华大学出版社 / 2010-7 / 39.00元
Mathematica是由美国科学家斯蒂芬·沃尔夫勒姆(Stephen Wolfram)领导的Wolfram Research Inc.研究公司所开发的一体化计算引擎。《Mathematica演示项目笔记》结合Mathematica演示项目以及第6版和第7版的最新功能(动态交互性、即时三维图形、数值模拟和仿真、高效实时计算、集成语言系统、多核并行计算和数字图像处理等),讲解了符号计算、程序设计、算......一起来看看 《Mathematica演示项目笔记》 这本书的介绍吧!