我用Python爬取1000封情书助力室友表白班花,却反转再反转

64 阅读7分钟

#### 页面分析


使用快捷键 F12 打开浏览器控制台 在源代码页面有包含 该网站为静态页面数据格式


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/98c347984861450d831891fec6bd49f6~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=WbimU5VkTVA2IdwnlhbB61ufkZM%3D)


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/1061479e3be942fb80951a7909883efa~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=1jtoBR9MlzJeEACGttUv7TXfWzc%3D)


 


**下面上代码:**



  1. 安装对应第三方库 (requests pyquery)
  2. pip install requests

![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/aa24972164994a1a9f19dce8b6cdf81b~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=%2FnDwd%2BWsGQHYsEgK0U9TQf7h6BI%3D)


 ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ce050ab9e75f45c49de02b330a363d9d~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=7Y%2BUdciR8WgSxDTvOHN8tJFrLaA%3D)


 ![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/8ab9d9c8fa8e4e98bf6951315857fb29~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=UFjL0bK%2B7bI9BBTs%2F6Yl5coMnao%3D)


 



import requests from pyquery import PyQuery as pq ​ ​ url = 'www.qingshu.so/aiqing/aqgs…' headers = {    # 请求服务器 获取需要的数据类型    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9',    'Referer': 'www.qingshu.so/bbqs.html', # 防盗链接 主要是验证你是从哪里来的    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36' # 浏览器类型 }

发送请求   content.decode('utf-8') 返回数据解码

response = requests.get(url, headers=headers).content.decode('utf-8') print(response)


**详情页地址提取**


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5b2a76714cb64b2a9f8c55559ed71a89~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=3%2F5H3moVvRwXNg8ZQLrExLiP9V8%3D)


 



doc = pq(response) # 创建pyquery对象 details = doc('.t a').items() # 通过前端css 的 类选择器提取对应数据 (a是标签 在 class='t'的下级)   (类选择器对应 .   id选择器对应#) for i in details:    href = i.attr('href') # 提取a标签当中的属性    urls = 'www.qingshu.so' + href # 拼接url地址    print(urls)


#### 详情页


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/e79cd01ee01d44d4b6f229f183a9262f~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=J0ilAIrwz083mStFbISf6ek0j30%3D)



**详情页代码:**



response = requests.get(urls).content.decode('utf-8') doc = pq(response) title = doc('.a_title').text() # 标题 content = doc('.a_content.clearfix').text() # 文章内容 print(title) print(content)


#### 文章存储



def Save(title, content):    '''   文章存储   :param title: 文章标题   :param content: 文章内容   :return:   '''    path = './情书网文章/'    if not os.path.exists(path): # 判断文件夹不存在 就新建一个文件夹        os.makedirs(path)    with open(path + '{}.txt'.format(title), 'a') as f:        f.write(content)    print('{}已经下载完成....'.format(title))


### 全部代码


代码太乱了 做了一个简单的函数封装 实现代码解耦



import requests from pyquery import PyQuery as pq import os ​ ​ def Tools(url):    '''   请求工具函数   :param url: 请求地址   :return: 响应   '''    headers = {        # 请求服务器 获取需要的数据类型        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9',        # 'Referer': 'www.qingshu.so/bbqs.html', # 防盗链接 主要是验证你是从哪里来的        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'        # 浏览器类型   }    # 发送请求   content.decode('utf-8') 返回数据解码    response = requests.get(url, headers=headers).content.decode('utf-8')    return response ​ ​ def Save(title, content):    '''   文章存储   :param title: 文章标题   :param content: 文章内容   :return:   '''    path = './情书网文章/'    if not os.path.exists(path): # 判断文件夹不存在 就新建一个文件夹        os.makedirs(path)    with open(path + '{}.txt'.format(title), 'a') as f:        f.write(content)    print('{}已经下载完成....'.format(title)) ​ ​ def Details(urls):    '''   请求详情页地址 获取 标题也 文章内容   :param urls: 详情页地址   :return:   '''    response = Tools(urls)    doc = pq(response)    title = doc('.a_title').text() # 标题    content = doc('.a_content.clearfix').text() # 文章内容    Save(title, content) ​ ​ url = 'www.qingshu.so/aiqing/aqgs…' response = Tools(url) doc = pq(response) # 创建pyquery对象 details = doc('.t a').items() # 通过前端css 的 类选择器提取对应数据 (a是标签 在 class='t'的下级)   (类选择器对应 .   id选择器对应#) for i in details:    href = i.attr('href') # 提取a标签当中的属性    urls = 'www.qingshu.so' + href # 拼接url地址    Details(urls)


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/9a747e46b81e4d6db118ba02c0eb5257~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=vSiPioxAOtjW1cBXqCibycpZARs%3D)


 


###  结尾


在我第二天满怀期待等待室友消息的时候,却收到了班花的一条消息,顿时懵了...彻底懵了...


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/0b1aa2f85c744fc3bc884b28259fe169~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=3VLSYlrZm8xbW9CKYp%2FsZ557XdQ%3D)


 我整理整理思绪,也就是说,**我以为的班花的秘密前面那些都是我以为的???原来班花的终极秘密就是曾经对我这个钢铁直男有好感!!!啊这...电视剧也不敢拍这么狗血的剧情啊...**


**我凌乱了..然后缓缓想想怎么处理这个吧...**


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/07adfa0671414a03afd426cd4ede1fc6~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=wWWQ8gJ3MLByPI6rGq9S6rttFUo%3D)


 


### 前面回顾:


[我用Python修改了班花的开机密码,重新登录后竟然发现了她的秘密!]( )​​​​​​ 


[我用Python采集了班花的空间数据集,除了美照竟然再一次发现了她另外的秘密!]( )


[室友单恋班花失败,我爬了一个网站发给他瞬间治愈,男人的快乐就这么简单【每天一遍,忘记初恋】]( )


[我用Python写了一个邮箱脚本发给班花,没想到事情闹大了...]( )


### 回答一下大家主要的问题:


#### 这个系列里面的班花、室友是真的吗还是纯故事呢?


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/675cc42e59244019a71a1d8081186f9a~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=8NEzXkFEFAu%2B07OmH0czSfLcvB0%3D)


 答:这个问题其实很早之前我就回答过大家,包括在我的万粉总结、半年总结也说到,我的创作心路历程都详细说了,这里不做过多解释了,其实真假的问题我说了你们也不会相信,我凭几张截图就能证明我文章里的事情是真实的吗,但是我可以告诉你们的是,我写班花系列的第一篇,就是我找到自己风格定位的第一篇,我把生活中的事结合技术博文写到一起,大大激发了我的创作灵感,生活中的事情被我夸大化了放进博文中,所以你相信就是真的,就当学习里面涉及的技术了,不相信就当假的学习技术的同时看了故事。


#### 文章中公开别人的隐私问题真的好吗?


![](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/f58fb6986b1942e1a5042f20d04f4c90~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=P%2BnJ%2BNDV4ksIwQrzP7LQ6im3rNg%3D)



**一、Python所有方向的学习路线**

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/e2d334b883b245e8b5c176d5ac2429c7~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=QSxOfJNOXXOLtl6A63luwMP9eP0%3D)  
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/790c0f65ec5e4052963da9dc1ceb2d1f~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=5YUaKiKBnwAFiSQBtyTCQAtrcgs%3D)

**二、Python必备开发工具**

工具都帮大家整理好了,安装就可直接上手!![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/4c1a64ee492e480f8e86ad44bbef4168~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=0QQR5P9k3J5weEzlJbqpGgFURZs%3D)

**三、最新Python学习笔记**

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d26938b8a18944a9a4e15d0c40533561~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=ozaNJRLhKjifpPOkkTHDeDwLGnQ%3D)

**四、Python视频合集**

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/38c8765bf1e9431ab8f2c45c0f3a66a9~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=KX4mviXXM0zOe7KkfCBb2nwf5vI%3D)

**五、实战案例**

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/078a0f39135f441298484022f003b423~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=EmlbhgUVLXsS75FvFTHd67gfId4%3D)

**六、面试宝典**

![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/93c4bae2e4524be28b3b2bc7bdfe4d91~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=NQH0IUhWjOgCPUgEOT51poHnsHU%3D)

![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/d1f856850d954b5cbfae4b629e6ac8bc~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=LR4jEM1i2e3kdTmRtHTO2SQkc50%3D)

###### **简历模板**![在这里插入图片描述](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5b94cd2f22304638b7817bff51804a26~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NTc5MjMwMTY3MDI=:q75.awebp?rk3s=f64ab15b&x-expires=1771407826&x-signature=JPfvY9qfRSkuip3OzzuLXTwM4nw%3D)



**了解详情:https://docs.qq.com/doc/DSnl3ZGlhT1RDaVhV**