学会这招Python爬虫技巧,小姐姐看你的眼神将不一样

【YOLOv11多模态融合改进】(可见光+红外)涉及像素级融合、特征级融合(中期、中后期、后期)、决策级融合的完整配置步骤以及二次改进方案 在网络输入阶段将多模态数据直接合并,形成统一的特征表示。 阅读详情

学会这招,小姐姐看你的眼神将不一样

  • 前言
  • 一、爬虫分析
  • 二、爬取项目ID
  • 1.抓取帖子的URL2.提取帖子中的UUID3.完整代码
  • 三、爬取项目的数据
  • 写在最后

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

前言

今天某小丽同学来找我,有个实验需要用到轻松筹的数据进行一个分析。可是没有足够的数据,如何办是好?
乐于助人的我,当然不会置之不理~
(ps.毕竟是小姐姐嘛,拒绝了不好,对叭)

于是乎,我抄起家伙,说干就干。

一、爬虫分析

通过简单的分析,可以发现轻松筹提供了一个接口,可以返回某个项目的相关数据,具体如下:


地址如下,xxxxxx表示项目的UUID:

https://gateway.qschou.com/v3.0.0/project/index/text3/xxxxxx

也就是说,我们只要有UUID,那么就可以通过requests发送请求很容易就能得到数据。这还不简单,我们对UUID进行遍历不就行了嘛?
然而,UUID的长度为32位,要是想遍历的话,等明年去叭…
解决问题(小声说:“获得小姐姐的青睐”)的关键就是想办法找到项目的UUID。

二、爬取项目ID

在官网搜寻了一番,并没有发现哪里有UUID。于是,我们只能另辟蹊径。最后,我决定从百度贴吧入手,搜索相关的帖子,并把帖子中的项目链接中的UUID提取出来。

1.抓取帖子的URL

遍历整个“轻松筹吧”,抓取每个帖子的URL:

url_tieba = 'https://tieba.baidu.com/f?kw=轻松筹&ie=utf-8&pn=%d' # 贴吧页面,pn=0,50,100...
p_href = 'href="/p/(.*?)"'
hrefs = []
for i in range(1): # 爬取的页数
    try:
        pn = i*50
        res = requests.get(url_tieba%pn)
        html = res.text
        list_herf = re.findall(p_href,html)
        for h in list_herf:           	
           hrefs.append('https://tieba.baidu.com/p/'+h)
        print('第%d页获取成功'%(i+1))
    except:
        pass
with open('tiezi_url.txt','w') as f:
    for h in hrefs:
        f.write(h+'\n')

2.提取帖子中的UUID

要获取每个帖子里面的项目UUID,主要有两种方式:
(1)从帖子中的链接中提取
首先定义匹配链接的正则表达式:

p_projuuid = 'https://m2.qschou.com.*?projuuid=(.*?)&'
1

对帖子进行匹配:

for h in hrefs:
   try:
       res = requests.get(h)
       html = res.text
       list_projuuid = re.findall(p_projuuid,html) # 判断帖子里是否有直接的链接
       if len(list_projuuid) != 0:
           for p in list_projuuid:
               if p not in projuuids and len(p) == 36:
                   projuuids.append(p)
                   print('%s 提取到projuuid:%s'%(h,p))
       else:  # 提取帖子中的图片获取二维码
           list_img = re.findall(p_img,html)
           if len(list_img) == 0:
               print('%s 无法提取到projuuid'%h)
           else:
               for i in list_img:
                   txt_list = get_ewm(i)
                   if len(txt_list) != 0:
                       barcodeData = txt_list[0].data.decode("utf-8")
                       for p in re.findall('projuuid=(.*)',barcodeData):
                           if p not in projuuids and len(p) == 36:
                               projuuids.append(p)
                               print('%s 提取到projuuid:%s'%(h,p))
   except:
        pass

(2)从帖子中的二维码中提取
首先,我们得匹配帖子中的所有图片,正则如下:

p_img = 'class="BDE_Image" src="(.*?)"'

然后对其中的每张图片,进行二维码读取,如果包含项目连接则将其中的UUID提取出来:

for h in hrefs:
   try:
       res = requests.get(h)
       html = res.text
       list_projuuid = re.findall(p_projuuid,html) # 判断帖子里是否有直接的链接
       if len(list_projuuid) != 0:
           for p in list_projuuid:
               if p not in projuuids and len(p) == 36:
                   projuuids.append(p)
                   print('%s 提取到projuuid:%s'%(h,p))
       else:  # 提取帖子中的图片获取二维码
           list_img = re.findall(p_img,html)
           if len(list_img) == 0:
               print('%s 无法提取到projuuid'%h)
           else:
               for i in list_img:
                   txt_list = get_ewm(i)
                   if len(txt_list) != 0:
                       barcodeData = txt_list[0].data.decode("utf-8")
                       for p in re.findall('projuuid=(.*)',barcodeData):
                           if p not in projuuids and len(p) == 36:
                               projuuids.append(p)
                               print('%s 提取到projuuid:%s'%(h,p))
   except:
        pass

其中,读取二维码的函数如下:

def get_ewm(img_adds):
    # 读取二维码的内容: img_adds:二维码地址(可以是网址也可是本地地址)
    if os.path.isfile(img_adds):
        # 从本地加载二维码图片
        img = Image.open(img_adds)
    else:
        # 从网络下载并加载二维码图片
        rq_img = requests.get(img_adds).content
        img = Image.open(BytesIO(rq_img))

    txt_list = pyzbar.decode(img)
    #barcodeData = txt_list[0].data.decode("utf-8")
    return txt_list

注意:这里需要用到pyzbar库,通过pip安装即可:

pip install pyzbar

3.完整代码

import re
import os
import requests
from PIL import Image
from io import BytesIO
from pyzbar import pyzbar
 
 
def get_ewm(img_adds):
    # 读取二维码的内容: img_adds:二维码地址(可以是网址也可是本地地址)
    if os.path.isfile(img_adds):
        # 从本地加载二维码图片
        img = Image.open(img_adds)
    else:
        # 从网络下载并加载二维码图片
        rq_img = requests.get(img_adds).content
        img = Image.open(BytesIO(rq_img))

    txt_list = pyzbar.decode(img)
    #barcodeData = txt_list[0].data.decode("utf-8")
    return txt_list
 
if __name__ == '__main__':
   # 获取每个帖子的编号
   url_tieba = 'https://tieba.baidu.com/f?kw=轻松筹&ie=utf-8&pn=%d' # 贴吧页面,pn=0,50,100...
   p_href = 'href="/p/(.*?)"'
   hrefs = []
   for i in range(1): # 爬取的页数
       try:
           pn = i*50
           res = requests.get(url_tieba%pn)
           html = res.text
           list_herf = re.findall(p_href,html)
           for h in list_herf:
               hrefs.append('https://tieba.baidu.com/p/'+h)
           print('第%d页获取成功'%(i+1))
       except:
           pass
   with open('tiezi_url.txt','w') as f:
       for h in hrefs:
           f.write(h+'\n')
   # 爬取每个帖子中的轻松筹链接
   projuuids = []
   p_projuuid = 'https://m2.qschou.com.*?projuuid=(.*?)&'
   p_img = 'class="BDE_Image" src="(.*?)"'
   for h in hrefs:
       try:
           res = requests.get(h)
           html = res.text
           list_projuuid = re.findall(p_projuuid,html) # 判断帖子里是否有直接的链接
           if len(list_projuuid) != 0:
               for p in list_projuuid:
                   if p not in projuuids and len(p) == 36:
                       projuuids.append(p)
                       print('%s 提取到projuuid:%s'%(h,p))
           else:  # 提取帖子中的图片获取二维码
               list_img = re.findall(p_img,html)
               if len(list_img) == 0:
                   print('%s 无法提取到projuuid'%h)
               else:
                   for i in list_img:
                       txt_list = get_ewm(i)
                       if len(txt_list) != 0:
                           barcodeData = txt_list[0].data.decode("utf-8")
                           for p in re.findall('projuuid=(.*)',barcodeData):
                               if p not in projuuids and len(p) == 36:
                                   projuuids.append(p)
                                   print('%s 提取到projuuid:%s'%(h,p))
       except:
            pass
   with open('projuuids.txt','w') as f:
       for p in projuuids:
           f.write(p+'\n')

三、爬取项目的数据

这里通过遍历之前获得的UUID,即可获得相应的数据:

import requests
import  pandas as pd

# 读取projuuid
with open('projuuids.txt','r') as f:
    projuuids = f.readlines()
    for i in range(len(projuuids)): # 去除尾部换行符
        projuuids[i] = projuuids[i][:-1]

# 获取数据
url_api = 'https://gateway.qschou.com/v3.0.0/project/index/text3/%s'
datas = []
for projuuid in projuuids:
    res = requests.get(url_api%projuuid)
    data_json = res.json()
    data = data_json['data']['project']
    data['certification'] = data_json['data']['subsidy'][1]['subhead'].split()[-2]
    datas.append(data)
    print('%s 获取完毕'%projuuid)

datas = pd.DataFrame(datas)
datas.to_csv('data.csv',encoding='utf-8',index=False)

写在最后

至此,大功告成。我也获得了小姐姐的赞美,嘻嘻~

最后,感谢各位大大的耐心阅读~

 

YOLOv8剪枝 lamp剪枝测试精度仅掉0.7个点,速度提高11.8fps! 该摘要介绍了LAMP剪枝方法的创新点和理论分析,重点突出了其最小化L2失真和分层自适应剪枝的特性。LAMP通过引入ξ变量在最坏情况下优化剪枝失真,并简化了计算过程。文章还提供了代码移植的具体步骤,包括创建compress.py文件和相关配置说明。 阅读详情

相关推荐

YOLOv11垃圾检测实战:从零搭建带GUI的智能分类系统(附完整数据集)

本文详细介绍了如何从零开始构建一个基于YOLOv11的智能垃圾检测系统,并集成图形化界面。内容涵盖数据集构建与增强、模型选型与轻量化改进(如引入注意力机制),以及使用PyQt5开发稳定GUI的完整流程,旨在解决实际部署中精度与速度的平衡问题,为环保科技等应用场景提供可落地的解决方案。

649

学会这招,小姐姐看你的眼神将不一样

学会这招,小姐姐看你的眼神将不一样前言一、爬虫分析二、爬取项目ID1.抓取帖子的URL2.提取帖子中的UUID3.完整代码三、爬取项目的数据写在最后 前言 今天某小丽同学来找我,有个实验需要用到轻松筹的数据进行一个分析。可是没有足够的数据,如何办是好? 乐于助人的我,当然不会置之不理~ (ps.毕竟是小姐姐嘛,拒绝了不好,对叭) 于是乎,我抄起家伙,说干就干。 一、爬虫分析 通过简单的分析,可以发现轻松筹提供了一个接口,可以返回某个项目的相关数据,具体如下: 地址如下,xxxxxx表示项目的UUID: h

kimol君的博客 2万+

嵌入式通信协议----Wi-Fi协议详解(一)

Wi-Fi,又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。

聪聪的成长之路 1657

网络爬虫-cnzz网站统计(umuuid参数加密破解)

总体来说算是比较easy的js加密 由于涉及到部分隐私 就简单说下该参数的加密思路 以马蜂窝为例 该网站使用的是CNZZ统计流量 首先抓包看参数,如图 可以比较清晰地看到 cnzz的统计是发起的这个get请求 然后看下这些参数 我们不确定的参数有 id / cnzz_eid / umuuid / rnd ,除了这几个 其他的应该都是常量或者可以轻易伪造的 如时间戳以及屏幕大小等 为了搞清楚这几...

qq_39802740的博客 1万+

PaddleOCR实战:从零开始训练自己的OCR模型(附完整代码与数据集处理技巧)

本文提供了一份详尽的PaddleOCR实战指南,手把手教你从零开始训练专属的OCR模型。内容涵盖高质量训练数据的准备与标注技巧、预训练模型的选型对比、关键参数调优策略,并附有完整的代码示例。通过遵循本文的步骤,开发者可以高效构建并优化贴合自身业务场景的高精度OCR模型,实现从数据到部署的全流程掌握。

weixin_29263201的博客 571

全国充电站分布数据

CnOpenData推出的充电站数据覆盖全国34个省份的3万条数据,包含充电站名称、省份名称、省份代码、商圈、经纬度等地理信息以及商业类型、评分、消费等衍生信息,能为城市规划、环境科学、市场分析、技术发展和社会经济研究等多个领域提供宝贵的数据支持。

Sunny9qx的博客 4034

逆向爬虫35 常见加密的python实现

将App逆向中常见的算法用python实现,方便以后的使用

weixin_40743639的博客 864

ArcGIS拓扑面错误批量修改

在工作学习中经常会遇到拓扑修改的问题,当数据量巨大的时候会产生拓扑问题 当拓扑错误数量巨大时,人工逐一修改是不现实的,基于此利用gis自带工具箱实现拓扑面类错误的批量修改。 一、.常见拓扑错误的类型: 1面重叠 2空隙(绿色部分) 二、拓扑检查 1新建数据库-----新建数据集—导入数据. 2新建拓扑 3修改拓扑容差及名称 添加拓扑修改规则 完成拓扑检查-查看拓扑错误 三、拓扑批量...

qq_43173805的博客 3万+

爬虫中常见的问题,常见的反爬机制

原文来源:https://www.cnblogs.com/Eeyhan/p/11520608.html 1.请求头之User-agent 这个稍微接触过一点点爬虫的应该都不陌生,不是说接触Python爬虫,不管你用什么开发语言来写爬虫,应该都会用到这个。大概解释一下,就是一个身份的象征,这个可以用浏览器自带的调试工具查看,访问一个网站的时候,按f12键或者鼠标右键打开调试(有的浏览器叫检...

eli的博客 1万+

Python爬虫教程:爬取法院司法拍卖数据全流程实战(附反爬+数据分析方案)

Python爬虫爬取法院司法拍卖数据的核心是模拟真人行为规避反爬+精准解析页面数据+合理处理数据。新手不用一开始就追求高级的反爬技巧和复杂的数据分析,先把基础的分页爬取和数据保存功能跑通,再逐步优化。我做的这个工具现在每周帮朋友爬取全国10个城市的法拍房数据,自动生成分析报告,他说这让他的投资决策效率提升了一倍。如果你们在开发过程中遇到问题,比如反爬失败、数据解析错误,都可以在评论区留言,我会尽力解答。后续我还会出一期爬取京东司法拍卖数据的教程,帮助大家获取更多的法拍数据来源。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2186

编程助手:CLAUDE.md 与 AGENTS.md 完全指南

AI编程助手配置文件指南 为解决AI编程助手在陌生项目中面临的运行、规范、架构等问题,本文提出两种配置文件: CLAUDE.md(根目录): 面向通用AI(如ClaudeCode) 包含项目命令、代码风格、架构说明等结构化信息 示例:启动命令:npm run dev,代码规范:TypeScript禁用any AGENTS.md(任意目录): 面向智能编码工具(如Cursor) 支持模块级配置(如微前端子应用) 示例:前端测试命令:npm test:web,API请求规范 与传统README.md的区别: 人

分享AI、区块链技术及应用,未来已来 1258

python爬虫-京东登录

在写爬虫的时候,解决登陆问题往往是比较麻烦的事情。这里介绍一下京东网站的登陆方法。 登陆到京东的首页,我们看到最上方有一个登陆链接,点进去之后是这样: https://passport.jd.com/new/login.aspx 为了方便我们观察传递的参数规律,我们先用自己的账号密码模拟登陆一次,然后使用抓包工具查看。这里使用的是firefox+firebug ,firebug在这篇文章

beagreatprogrammer的专栏 1万+

2.3 MMU Notifier(上):KVM 催生的页表变化通知

探讨了MMU Notifier机制的作用及其在虚拟化等场景中的应用。当CPU页表发生变更(如munmap、页面迁移等操作)时,需要通知拥有"第二套页表"的子系统(如KVM的EPT/NPT、IOMMU、GPU等)失效其映射。MMU Notifier通过订阅-通知机制实现这一功能,核心数据结构包括mmu_notifier订阅对象和回调接口mmu_notifier_ops。当CPU页表修改时,通过mmu_notifier_range描述变更范围,调用订阅者的回调函数进行同步,确保外部MMU与CPU页表一致性。

图形/计算GPU的驱动与虚拟化技术分享园地 1040

学会这招,小姐姐看你的眼神将不一样!这就是它的魅力!

前言 今天某小丽同学来找我,有个实验需要用到轻松筹的数据进行一个分析。可是没有足够的数据,如何办是好? 乐于助人的我,当然不会置之不理~ (ps.毕竟是小姐姐嘛,拒绝了不好,对叭) 于是乎,我抄起家伙,说干就干。 一、爬虫分析 通过简单的分析,可以发现轻松筹提供了一个接口,可以返回某个项目的相关数据,具体如下: 地址如下,xxxxxx表示项目的UUID: https://gateway.qschou.com/v3.0.0/project/index/text3/xxxxxx 1 也就是

爬遍所有网站 197

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

2024年我用Python实现自动化办公,小姐姐投来羡慕的眼神!

现在好了, 每天的工作时间已经被我砍了一半了,那么我就可以思考,如何解决各类的技术问题。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面;

2401_84557849的博客 106

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

我用Python实现自动化办公,小姐姐投来羡慕的眼神!

现在好了, 每天的工作时间已经被我砍了一半了,那么我就可以思考,如何解决各类的技术问题。后来想到, 之前自己从网上下载的某某私服的一键端里,有个MySQL数据库的一键启动方式,试了试居然能用,就把那个MySQL程序整个拷出来、清干净,作为了我的数据库。同理,当你实现一部分的工作自动化以后,你就会走上一个“工作自由”的快车道,因为你有更多的时间能用来研究如何去更高效的完成余下的那堆工作, 然后,每天工作的时间就会越来越短。现在,我每天的工作,只需要十分钟,最快记录四分钟,就能完成。

2401_84003941的博客 474

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

面试资料题我用Python实现自动化办公,小姐姐投来羡慕的眼神!,【吐血整理

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

594

2024年Python最新我用Python实现自动化办公,小姐姐投来羡慕的眼神!(3)

同理,当你实现一部分的工作自动化以后,你就会走上一个“工作自由”的快车道,因为你有更多的时间能用来研究如何去更高效的完成余下的那堆工作, 然后,每天工作的时间就会越来越短。为什么上文中我有那么多括号写的各种搞不定?因为没时间啊!现在好了, 每天的工作时间已经被我砍了一半了,那么我就可以思考,如何解决各类的技术问题。我学会了Excel的各种库,比如xlrd、xlwt、xlsxwriter、openpyxl、xlwings、win32com,能根据自己的需要选择需要用的库;

2401_84692299的博客 103

2024年Python最新我用Python实现自动化办公,小姐姐投来羡慕的眼神!(1)

我的第一步是从数据清洗开始,先把刚才说的那个70M的Excel导成csv,去掉了其中不必要的格式、 样式、对象等。然后我想统一一下各个数据的标准名称,刚才说了,由于经手的人太多,同一个数据,怎么表述的都有, 几十万的数据量,人工交叉比对的话显然是不现实的。(后来才知道了笛卡尔积这个词)我第一步先使用了Excel自身的去重功能,将所有的供货商名称进行了一个去重,剩下了大概5000个左右的名称。然后,作为一个懒人, 我肯定不会用人工去比对了。

2401_84692299的博客 131

python生成uuid_咸鱼高赞回答:有什么相见恨晚的Python技巧,附赠python最新教程...

日常工作几乎离不python。一路走来,他积累了不少有用的技巧和tips,现在就将这些技巧分享给大家。这些技巧将根据其首字母按A-Z的顺序进行展示。Python相关学习资料获取方式:转发文章+关注私信【Python】ALL OR ANYPython之所以成为这么一门受欢迎的语言一个原因是它的可读性和表达能力非常强。Python也因此经常被调侃为“可执行的伪代码”。不信你看:BASHPLOTIB你想...

weixin_39922147的博客 170

python爬虫(终)

主函数:#coding: utf-8 ''' Created on 2016年4月21日@author: Administrator ''' import uuid ''' 多线程爬虫 天涯杂谈 爬取4月一个月的数据''' import requests,re import json import time import MySQLdb from sqlUtil2 import saveTopic,

1059
上一篇: Python炫技操作,小白秒变大神
下一篇: python自动化办公:文件篇(自动整理文件,一键完成)
Python_sn
博客等级 码龄6年 324粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值