你学爬虫,最终不还是为了爬妹子

125537qvvcq0jz6h7zv7s2.jpg (10.63 KB, 下载次数: 0)

2019-11-27 12:55 上传啥也不说,开始福利赠送~女神大会不是知道有多少人知道“懂球帝”这个 APP(网站),又有多少人关注过它的一个栏目“女神大会”,在这里,没有足球,只有女神哦。画风是这样的

125539gfcz70d7ne0fhs9q.jpg (73.65 KB, 下载次数: 0)

2019-11-27 12:55 上传女神评分,全部是由球迷来决定,是不是很赤鸡,下面就一起来看看球迷眼中女神排名吧。开工获取 ID 信息首先,我们可以通过抓取懂球帝 APP 的网络请求,拿到一个 API,http://api.dongqiudi.com/search?keywords=type=all&page=该 API ,我们能够拿到如下信息

125542neiq4jix4qwoxojx.jpg (39.82 KB, 下载次数: 0)

2019-11-27 12:55 上传 我们主要关注 ID 和 thumb,ID 后面用来拼接女神所在页面的 HTML 地址,thumb 就用来收藏。

125544b0s8a3q3we0k2ate.jpg (12.53 KB, 下载次数: 0)

2019-11-27 12:55 上传 于是,我们就可以得到一个简单的解析函数def get_list(page): nvshen_id_list = [] nvshen_id_picture = [] for i in range(1, page): print("获取第" + str(i) + "页数据") url = 'http://api.dongqiudi.com/search?keywords=%E5%A5%B3%E7%A5%9E%E5%A4%A7%E4%BC%9A&type=all&page=' + str(i) html = requests.get(url=url).text news = json.loads(html)['news'] if len(news) == 0: print("没有更多啦") break nvshen_id = [k['id'] for k in news] nvshen_id_list = nvshen_id_list + nvshen_id nvshen_id_picture = nvshen_id_picture + [{k['id']: k['thumb']} for k in news] time.sleep(1) return nvshen_id_list, nvshen_id_picture下载 HTML 页面接下来,通过观察,我们能够得到,每个女神所在的页面地址都是这样的,https://www.dongqiudi.com/archive/**.html其中 ** 就是上面拿到的 ID 值,那么获取 HTML 页面的代码也就有了def download_page(nvshen_id_list): for i in nvshen_id_list: print("正在下载ID为" + i + "的HTML网页") url = 'https://www.dongqiudi.com/archive/%s.html' % i download = DownloadPage() html = download.getHtml(url) download.saveHtml(i, html) time.sleep(2) class DownloadPage(object): def getHtml(self, url): html = requests.get(url=url).content return html def saveHtml(self, file_name, file_content): with open('html_page/' + file_name + '.html', 'wb') as f: f.write(file_content)防止访问限制,每次请求都做了2秒的等待但是,问题来了当我直接请求这个页面的时候,竟然是这样的

125545obdcpdyv77llpbbv.png (23.85 KB, 下载次数: 0)

2019-11-27 12:55 上传被(悲)拒(剧)了

125545rmssrwsuwwsmr2rr.jpg (19.06 KB, 下载次数: 0)

2019-11-27 12:55 上传没办法,继续斗争。重新分析,发现请求中有携带一个 cookie,哈哈,这个我们已经轻车熟路啦对 requests 请求增加 cookie,同时再把 headers 里面增加个 User-Agent,再试

125547pef5h77xwd7wewee.jpg (95.03 KB, 下载次数: 0)

2019-11-27 12:55 上传成了!

125549ms0bgy6mal11bfa0.jpg (89.34 KB, 下载次数: 0)

2019-11-27 12:55 上传解析本地 HTML最后,就是解析下载到本地的 HTML 页面了,页面的规则就是,本期女神介绍页面,会公布上期女神的综合得分,而我们的主要任务就是获取各个女神的得分def deal_loaclfile(nvshen_id_picture): files = os.listdir('html_page/') nvshen_list = [] special_page = [] for f in files: if f[-4:] == 'html' and not f.startswith('~'): htmlfile = open('html_page/' + f, 'r', encoding='utf-8').read() content = BeautifulSoup(htmlfile, 'html.parser') try: tmp_list = [] nvshen_name = content.find(text=re.compile("上一期女神")) if nvshen_name is None: continue nvshen_name_new = re.findall(r"女神(.+?),", nvshen_name) nvshen_count = re.findall(r"超过(.+?)人", nvshen_name) tmp_list.append(''.join(nvshen_name_new)) tmp_list.append(''.join(nvshen_count)) tmp_list.append(f[:-4]) tmp_score = content.find_all('span', attrs={'style': "color:#ff0000"}) tmp_score = list(filter(None, [k.string for k in tmp_score])) if '.' in tmp_score[0]: if len(tmp_score[0]) > 3: tmp_list.append(''.join(list(filter(str.isdigit, tmp_score[0].strip())))) nvshen_list = nvshen_list + get_picture(content, tmp_list, nvshen_id_picture) else: tmp_list.append(tmp_score[0]) nvshen_list = nvshen_list + get_picture(content, tmp_list, nvshen_id_picture) elif len(tmp_score) > 1: if '.' in tmp_score[1]: if len(tmp_score[1]) > 3: tmp_list.append(''.join(list(filter(str.isdigit, tmp_score[1].strip())))) nvshen_list = nvshen_list + get_picture(content, tmp_list, nvshen_id_picture) else: tmp_list.append(tmp_score[1]) nvshen_list = nvshen_list + get_picture(content, tmp_list, nvshen_id_picture) else: special_page.append(f) print("拿不到score的HTML:", f) else: special_page.append(f) print("拿不到score的HTML:", f) except: print("解析出错的HTML:", f) raise return nvshen_list, special_page def get_picture(c, t_list, n_id_p): print("进入get_picture函数:") nvshen_l = [] tmp_prev_id = c.find_all('a', attrs={"target": "_self"}) for j in tmp_prev_id: if '期' in j.string: href_list = j['href'].split('/') tmp_id = re.findall(r"\d+\.?\d*", href_list[-1]) if len(tmp_id) == 1: prev_nvshen_id = tmp_id[0] t_list.append(prev_nvshen_id) for n in n_id_p: for k, v in n.items(): if k == prev_nvshen_id: t_list.append(v) print("t_list", t_list) nvshen_l.append(t_list) print("get_picture函数结束") return nvshen_l保存数据对于我们最后解析出来的数据,我们直接保存到 csv 文件中,如果数据量比较大的话,还可以考虑保存到 mongodb 中。def save_to_file(nvshen_list, filename): with open(filename + '.csv', 'w', encoding='utf-8') as output: output.write('name,count,score,weight_score,page_id,picture\n') for row in nvshen_list: try: weight = int(''.join(list(filter(str.isdigit, row[1])))) / 1000 weight_2 = float(row[2]) + float('%.2f' % weight) weight_score = float('%.2f' % weight_2) rowcsv = '{},{},{},{},{},{}'.format(row[0], row[1], row[3], weight_score, row[4], row[5]) output.write(rowcsv) output.write('\n') except: raise对于女神的得分,又根据打分的人数,做了个加权分数保存图片def save_pic(url, nick_name): resp = requests.get(url) if not os.path.exists('picture'): os.mkdir('picture') if resp.status_code == 200: with open('picture' + f'/{nick_name}.jpg', 'wb') as f: f.write(resp.content)直接从拿到的 thumb 地址中下载图片,并保存到本地。做一些图首先我们先做一个柱状图,看看排名前10和倒数前10的情况

125550ssjfrswsedfrmvye.jpg (50.76 KB, 下载次数: 0)

2019-11-27 12:55 上传可以看到,朱茵、石川恋和高圆圆位列三甲,而得分高达95+的女神也有7位之多。那么排名后10位的呢,自行看吧,有没有人感到有点扎心呢,哈哈哈。同时,也能够从打分的人数来看出,人气高的女神,普遍得分也不低哦。不过,该排名目前只代表球迷心目中的榜单,不知道程序猿心中的榜单会是怎样的呢

125552drvrs9vxdsl22644.jpg (11.94 KB, 下载次数: 0)

2019-11-27 12:55 上传词云

125554m68uu0srk3j3z5i6.jpg (101.33 KB, 下载次数: 0)

2019-11-27 12:55 上传图片墙

125558fhe2ezvzhete3vsc.jpg (164.22 KB, 下载次数: 0)

2019-11-27 12:55 上传流口水哦。

125601ewltklhbxauuxfwk.jpg (44.39 KB, 下载次数: 0)

2019-11-27 12:55 上传百度 API 评分百度有免费的人脸检测 API,只要输入图片,就能够得到对应的人脸得分,还是非常方便的,感兴趣的小伙伴可以去官网看看哦。我这里直接给出了我通过百度 API 得出的女神新得分,一起来看看吧

125604pttolzrzz7tr04uo.jpg (44.4 KB, 下载次数: 0)

2019-11-27 12:55 上传哈哈哈哈,AI 的评分,对于图片的依赖太高,纯属娱乐。

来源:https://www.cnblogs.com/chengxyuan/p/11929574.html

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

python爬女神_终于我还是没忍住,用Python爬了一波女神相关推荐

  1. 终于我还是没忍住,用Python爬了一波女神

    你学爬虫,最终不还是为了爬妹子 啥也不说,开始福利赠送~ 女神大会 不是知道有多少人知道"懂球帝"这个 APP(网站),又有多少人关注过它的一个栏目"女神大会" ...

  2. 群里又会python的吗_自从会了Python在群里斗图就没输过,Python批量下载表情包!...

    原标题:自从会了Python在群里斗图就没输过,Python批量下载表情包! 导语 最近图慌,于是随便写了个表情包批量下载的脚本,没什么技术含量,纯娱乐性质. 让我们愉快地开始吧~ 开发工具 Pyth ...

  3. excel运行python自定义函数_终于,可以在Excel中直接使用Python!

    大家好,我是早起. 经常给大家推荐好用的数据分析工具,也收到了铁子们的各种好评.这次也不例外,我要再推荐一个,而且是个爆款神器. Excel和Jupyter Notebok都是我每天必用的工具,而且两 ...

  4. 一起学python表情包_真香警告!多线程分类表情包爬取,一起斗图叭(*^▽^*)~~~

    :点击上方[Python爬虫数据分析挖掘]→右上角[...]→[设为星标⭐] 多线程爬取表情包 有一个网站,叫做"斗图啦",网址是:https://www.doutula.com/ ...

  5. python难度如何_【经验分享】想转行学python,过来人提醒大家几点

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 提醒大家几点 一:盲目的去学 当初我在对于python这个行业什么都不了解的情况下,比如:不知道未来发展趋势,不知道学习python应该注意哪些初始问题, ...

  6. python log函数_求你别再花大价钱学 Python 之爬虫实战

    引子 Python 基本概念 Python 优势和劣势 优势 Python 的劣势 Python 安装设置 Python 基本语法 程序例子 Python 基本语法 Python 爬虫实现 爬虫相关 ...

  7. 大学开设python课程吗_在大学为什么你一定要学会Python?

    之前,网上流传一组<人工智能实验教材>的图片,照片火起来的原因是教材是为幼儿园的小朋友们设计的! Python被列入小学.初高中教材已不是新鲜事,现在又成功"入侵"了幼 ...

  8. python最新排名_最新编程语言排名:JS位列第一 Python超Java

    Redmonk新一轮的编程语言排名出炉,从使用量上看,Python超越了Java跃居第二,JavaScript仍保持领头羊的位置. 统计中对使用量的计算拉取的是Github和Stack OverFlo ...

  9. 知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...

    为什么是Python 先来聊聊为什么做数据分析一定要用 Python 或 R 语言.编程语言这么多种, Java , PHP 都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用 Python ...

最新文章

  1. pygame (1) 移动小乌龟
  2. 63.2. 配置 Postfix
  3. JavaFX中的塔防(5)
  4. 卡苹果6plus在线_@哈尔滨家长:学生卡初次申办,需要到线下网点办理!
  5. USACO / Sorting a Three-Valued Sequence (简单题,方法正确性待证)
  6. ECMAScript 发展简史
  7. 加载类_JVM类加载
  8. ifconfig没有ip地址_虚拟机创建后该如何获取IP地址并访问互联网实用教程
  9. CentOS 6.3用ssh无密码登陆其它主机
  10. How to increase sales, in addition to manufacturing different phones
  11. 2017 ACM-ICPC乌鲁木齐网络赛 G. Query on a string(KMP+树状数组)
  12. 诸如北京现代 只有四个轮子和一电瓶由中国制造(转自新华网)
  13. GCP+WORDPRESS建站。
  14. DW标签使用与javascript文档基础介绍
  15. 使命召唤4:现代战争
  16. Restful风格的springMVC配搭ajax请求的小例子
  17. 计算机开机出现ROM,电脑无法开机并显示EXITING INTEL PXE ROM如何解决
  18. 教你用代码实现一个网页老虎机游戏
  19. jenkins构建项目报错:java:[17,37] package xx.xx.xxx does not exist
  20. 服务器除了一个灯亮其余的都不亮,鼠标键盘没反应

热门文章

  1. 2017-07-17 DBA日记,凭直觉发现CRSDG的磁盘问题及处理
  2. 讲讲 Maven 依赖
  3. Jquery 获取元素属性值
  4. git提交规范(文字版与emoji表情版)
  5. python读取txt文件写入-python txt文件的写入和读取
  6. 林夕给陈奕迅写的三首经典粤语歌解析,其中的《人来人往》被誉为粤语词作巅峰...
  7. 乘风而起!企业级应用软件市场迅猛发展,有哪些机会可以把握?
  8. 复杂的机械 简单的原理
  9. SRv6----报文转发流程
  10. HTML学习之链接target属性