我在刷豆瓣的时候发现,豆瓣上居然还有一个叫我被豆油表白了的交友话题,阅读量居然高达 8087734 次,拥有 1000+ 篇话题,几乎每篇平均被阅读了 8000+ ,看了一下里面的小姐姐照片还挺多的。今天我们就用爬虫把他们下载下来。

首先在浏览器中登录豆瓣,打开话题广场在右侧有一个分类查看话题点开情感。

打开后就是下面这个样子的。

爬虫开始

打开控制面板 F12, 找到带 items 的连接,然后复制整个 Request Headers 到代码中,采用复制 cookie 的方式登录豆瓣。

url_basic = 'https://m.douban.com/rexxar/api/v2/gallery/topic/18306/items?from_web=1&sort=hot&start={}&count=20&status_full_text=1&guest_only=0&ck=GStY'headers = { 'Accept': 'application/json, text/javascript, */*; q=0.01','Accept-Encoding': 'gzip, deflate, br','Accept-Language': 'zh-CN,zh;q=0.9','Connection': 'keep-alive','Content-Type': 'application/x-www-form-urlencoded','Cookie': 'bid=n7vzKfXLoUA; douban-fav-remind=1; ll="108296"; __utmc=30149280; __utmz=30149280.1624276858.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); ap_v=0,6.0; gr_user_id=ca8b9156-1926-4c82-9dda-27fc7f7ad51b; __utma=30149280.66080894.1623848440.1624276858.1624282580.3; __utmt=1; dbcl2="157316158:e4ojS8paSUc"; ck=GStY; push_doumail_num=0; __utmv=30149280.15731; frodotk="a187943e3a17e8bbe496bcbaae47ba31"; push_noty_num=0; __utmb=30149280.11.10.1624282580','Host': 'm.douban.com','Origin': 'https://www.douban.com','Referer': 'https://www.douban.com/gallery/topic/18306/','sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"','sec-ch-ua-mobile': '?0','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-site','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}

url_basic 就是可以返回列表 json 的地址,只有 start 参数在随鼠标下滑翻页改变。

for i in range(1,35):res = requests.get(url=url_basic.format(i * 20), headers=headers)res_json = json.loads(res.text)index = 0for item in res_json.get('items'):target = item.get('target')status = target.get('status')print("这里是第 {} 个".format((i - 1) * 20 + index));index = index + 1with open('douban.txt', 'a+') as f:f.write(json.dumps(status) + '\n');sleeptime=random.randint(1, 10)time.sleep(sleeptime)

这里把下载下来的数据缓存在 txt 文件里面。

图表

交友地图

先提取小姐姐的地址做一个热力图,看看那边的小姐姐单最多。

需要安装 cpca 第三方库,cpca 是一个用于提取简体中文字符串中省,市和区并能够进行映射,检验和简单绘图的python模块。简单来说就是将交友文字中出现的市区名称转换为省份名称。

pip install cpca

windows 上安装可能出现 Building wheel for pyahocorasick (setup.py) ... error 错误,需要安装 ` Microsoft Visual C++ Build Tools` 后再 pip install cpca。

第二个安装的是 pyecharts 第三方库,用来可视化热力图。

pip install pyecharts

可以看出华东和华南交友的小姐姐要比华北和西部的小姐姐多很多,看起来单身小姐姐都集中在一线城市及其周边。

Python 代码如下:

from pyecharts.charts import Geo
from pyecharts.globals import ChartTypeaddr_dic = {}
file_object = open('douban.txt','r')
try:for line in file_object:item = json.loads(line)if item == None:continueauthor = item['author']text = item['text']addr_transform = cpca.transform([text])addr = Noneif addr_transform['省'].str.split(' ')[0] != None:addr = addr_transform['省'].str.split(' ')[0][0].rstrip('省')//这里提取创作者里面的地址if addr is None and author['loc'] is not None:cpca.transform([author['loc']['name']])if addr_transform['省'].str.split(' ')[0] != None:addr = addr_transform['省'].str.split(' ')[0][0].rstrip('省')//这个地址要转换一下,不然 echarts 不认if addr is not None:if addr == '广西壮族自治区':addr = '广西'if addr == '香港特别行政区':addr = '香港'if addr == '澳门特别行政区':addr = '澳门'addr_dic[addr] = addr_dic.get(addr, 0) + 1finally:file_object.close()// 小姐姐热力图
(Geo().add_schema(maptype="china").add("",[list(z) for z in zip(list(addr_dic.keys()), list(addr_dic.values()))],type_=ChartType.HEATMAP,).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(visualmap_opts=opts.VisualMapOpts(),).render("热力图.html"))

词云

词云可以用来展示小姐姐们自身的情况和对对方的要求。用 pyecharts 生成词云和用 jieba 第三方库分词。

安装一下 jieba 第三方库。

pip install jieba

Python 代码如下:

import jieba
from collections import Counter
from pyecharts.charts import WordCloudfor line in file_object:item = json.loads(line)if item == None:continuetext = item['text']seg_list = jieba.cut(text, cut_all=False)text_list.extend(seg_list)# 词频统计,使用Count计数方法
words_counter = Counter(text_list)
# 将Counter类型转换为列表
words_list = words_counter.most_common(500)
(WordCloud().add(series_name="", data_pair=words, word_size_range=[20, 66]).render("词云.html")
)

照片下载

最后来下载小姐姐照片吧,直接用 request.get() 方法请求 images 里面的地址。

for line in file_object:item = json.loads(line)if item == None:continueimages = item['images']id = item['id']index = 0for i in images:index = index + 1url = i.get('large').get('url')r = requests.get(url);with open('./image/{}-{}.jpg'.format(id, index), 'wb') as f:f.write(r.content) 

总结

这篇爬虫到这里就结束了,我在这里祝愿朋友们都能找到自己的良人。

学习Python最重要的就是心态。我们在学习过程中必然会遇到很多难题,可能自己想破脑袋都无法解决。这都是正常的,千万别急着否定自己,怀疑自己。如果大家在刚开始学习中遇到困难,想找一个python学习交流环境,可以加入我们的【python裙】,领取学习资料,一起讨论,会节约很多时间,减少很多遇到的难题。

Python爬虫之豆瓣上征婚交友的美女们相关推荐

  1. 用Python搞定豆瓣上征婚交友的小姐姐们~

    文 | 某某白米饭 来源:Python 技术「ID: pythonall」 大家好,我是菜鸟哥! 派森酱在刷豆瓣的时候发现,豆瓣上居然还有一个叫我被豆油表白了的交友话题,阅读量居然高达 8087734 ...

  2. 豆瓣上征婚交友的小姐姐们

    文 | 某某白米饭 来源:Python 技术「ID: pythonall」 派森酱在刷豆瓣的时候发现,豆瓣上居然还有一个叫我被豆油表白了的交友话题,阅读量居然高达 8087734 次,拥有 1000+ ...

  3. Python爬虫(5):豆瓣读书练手爬虫

    Python爬虫(5):豆瓣读书练手爬虫 我们在之前的文章中基本上掌握了Python爬虫的原理和方法,不知道大家有没有练习呢.今天我就来找一个简单的网页进行爬取,就当是给之前的兵书做一个实践.不然不就 ...

  4. 使用Python爬虫获取豆瓣影评,并用词云显示

    使用Python爬虫获取豆瓣影评,并用词云显示 Python语言流行到现在,目前最受开发者喜爱的功能莫过于它的爬虫功能,以至于很多人以为Python的英语发音也是"爬虫",其实它是 ...

  5. python爬虫获取豆瓣图书Top250

    在上一篇博客<python爬虫获取豆瓣电影TOP250>中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法.这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片 ...

  6. Python 爬虫分析豆瓣 TOP250 之 信息字典 和 马斯洛的锥子

    问题 本文是对<Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?> 一文的补充 我们以<追风少年>为例 用chrome的developer tool查看源 ...

  7. Python爬虫之豆瓣排行榜(正则表达式)

    Python爬虫之豆瓣排行榜(正则表达式) 1. 项目目标 使用Chrome浏览器打开网页https://maoyan.com/ ,切换到[榜单],[TOP100榜].本次项目就是要获取豆瓣排名Top ...

  8. 实战python网络爬虫豆瓣_三分钟教会你利用Python爬虫实现豆瓣电影采集(实战篇)...

    一.项目背景 豆瓣电影提供最新的电影介绍及评论包括上映影片的影讯查询及购票服务.可以记录想看.在看和看过的电影电视剧 .顺便打分.写影评.极大地方便了人们的生活. 今天小编以电视剧(美剧)为例,批量爬 ...

  9. 豆瓣python源码_(附源码)Python爬虫之豆瓣攻坚战

    我:好无聊鸭~有没有好电影推荐一下鸭? 惨绿青年:你不是会制作python爬虫了吗?自己去豆瓣top250爬一下呗. 我:诶,居然还有这样的网站,让我赶紧去瞧瞧. 于是Paradoxical就打开了豆 ...

最新文章

  1. c#window服务程序
  2. Windows 系统下Git安装图解
  3. [原]Jenkins(十二)---jenkins管理员用户无法登陆解决办法Access Denied
  4. mongodb数组更新操作符$addToSet
  5. 华为服务器怎么查看系统日志,查询系统操作日志(operationlog)
  6. promehteus 监控超时_使用 Prometheus Operator 监控 Kubernetes Etcd
  7. 内蒙古自治区赤峰市谷歌高清卫星地图下载(百度网盘离线包下载)
  8. chrome redhat 下载源_RedHat 7.0 Chrome浏览器 安装
  9. 物质世界微观粒子运动规律——量子力学
  10. 从AWSome Day你可以学到什么?
  11. Vue 大量数据展示卡顿解决方案(长列表优化)
  12. 蓝牙 UUID 解释
  13. 迭代器 iter()
  14. 名帖86 蔡襄 行楷《谢赐御书诗表》
  15. java中任何变量都可以被赋值为null,关于异常处理:为什么“throw null”没有在Java中创建编译错误?...
  16. nload0.7.2编译及使用说明
  17. GPU初始化和启动流程(r600)
  18. Python编程:从入门到实践-第七章:用户输入和while循环(语法)
  19. 读书笔记之——数字图像处理与机器视觉(一)
  20. python上的免费免登录微信智能聊天机器人

热门文章

  1. android阿里云基础视频播放器
  2. stm32 adc输入电压范围_正点原子【STM32-F407探索者】第二十五章 光敏传感器实验...
  3. 开机自启(静态通知)
  4. fas怎么翻译成lisp_fas文件格式研究 - AutoLISP/Visual LISP 编程技术 - CAD论坛 - 明经CAD社区 - Powered by Discuz!...
  5. 使用Git rebase合并多条提交记录commit。以及使用 git commit amend本地提交直接合并到远程已有commit的用法
  6. 英语写作常见套用句型
  7. 书店存货c语言程序,C语言课程设计品库存管理系统.doc
  8. UE4 蓝图教程(一) 开始
  9. 成人高等教育计算机,成人高等教育计算机实验教学研究
  10. 细胞自动机c语言源代码,关于细胞自动机的程序..求救!!谢谢!