千家信息网

怎么利用python实现查看溧阳的摄影圈

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇"怎么利用python实现查看溧阳的摄影圈"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看
千家信息网最后更新 2025年11月07日怎么利用python实现查看溧阳的摄影圈

这篇"怎么利用python实现查看溧阳的摄影圈"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"怎么利用python实现查看溧阳的摄影圈"文章吧。

目标站点分析

本次要采集的目标站点分页规则如下:

http://www.jsly001.com/thread-htm-fid-45-page-{页码}.html

代码采用多线程 threading 模块+requests 模块+BeautifulSoup 模块编写。

采取规则依据列表页 → 详情页:

溧阳摄影圈图片采集代码

本案例属于实操案例,先展示完整代码,然后基于注释与重点函数进行说明。

主要实现步骤如下所示:

  • 设置日志输出级别

  • 声明一个 LiYang 类,其继承自 threading.Thread

  • 实例化多线程对象

  • 每个线程都去获取全局资源

  • 调用html解析函数

  • 获取板块主题分割区域,主要为防止获取置顶的主题

  • 使用 lxml 进行解析

  • 解析出标题与数据

  • 解析图片地址

  • 保存图片

import randomimport threadingimport loggingfrom bs4 import BeautifulSoupimport requestsimport lxmllogging.basicConfig(level=logging.NOTSET) # 设置日志输出级别# 声明一个 LiYang 类,其继承自 threading.Threadclass LiYangThread(threading.Thread):    def __init__(self):        threading.Thread.__init__(self) # 实例化多线程对象        self._headers = self._get_headers() # 随机获取 ua        self._timeout = 5 # 设置超时时间    # 每个线程都去获取全局资源    def run(self):        # while True: # 此处为多线程开启位置        try:            res = requests.get(url="http://www.jsly001.com/thread-htm-fid-45-page-1.html", headers=self._headers,                               timeout=self._timeout) # 测试获取第一页数据        except Exception as e:            logging.error(e)        if res is not None:            html_text = res.text            self._format_html(html_text) # 调用html解析函数    def _format_html(self, html):        # 使用 lxml 进行解析        soup = BeautifulSoup(html, 'lxml')        # 获取板块主题分割区域,主要为防止获取置顶的主题        part_tr = soup.find(attrs={'class': 'bbs_tr4'})        if part_tr is not None:            items = part_tr.find_all_next(attrs={"name": "readlink"}) # 获取详情页地址        else:            items = soup.find_all(attrs={"name": "readlink"})        # 解析出标题与数据        data = [(item.text, f'http://www.jsly001.com/{item["href"]}') for item in items]        # 进入标题内页        for name, url in data:            self._get_imgs(name, url)    def _get_imgs(self, name, url):        """解析图片地址"""        try:            res = requests.get(url=url, headers=self._headers, timeout=self._timeout)        except Exception as e:            logging.error(e)                # 图片提取逻辑        if res is not None:            soup = BeautifulSoup(res.text, 'lxml')            origin_div1 = soup.find(attrs={'class': 'tpc_content'})            origin_div2 = soup.find(attrs={'class': 'imgList'})            content = origin_div2 if origin_div2 else origin_div1            if content is not None:                imgs = content.find_all('img')                # print([img.get("src") for img in imgs])                self._save_img(name, imgs) # 保存图片    def _save_img(self, name, imgs):        """保存图片"""        for img in imgs:            url = img.get("src")            if url.find('http') < 0:                continue            # 寻找父标签中的 id 属性            id_ = img.find_parent('span').get("id")            try:                res = requests.get(url=url, headers=self._headers, timeout=self._timeout)            except Exception as e:                logging.error(e)            if res is not None:                name = name.replace("/", "_")                with open(f'./imgs/{name}_{id_}.jpg', "wb+") as f: # 注意在 python 运行时目录提前创建 imgs 文件夹                    f.write(res.content)    def _get_headers(self):        uas = [            "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)",        ]        ua = random.choice(uas)        headers = {            "user-agent": ua        }        return headersif __name__ == '__main__':    my_thread = LiYangThread()    my_thread.run()

本次案例采用中,BeautifulSoup 模块采用 lxml 解析器 对 HTML 数据进行解析,后续多采用此解析器,在使用前注意先导入 lxml 模块。

数据提取部分采用 soup.find()soup.find_all() 两个函数进行,代码中还使用了 find_parent() 函数,用于采集父级标签中的 id 属性。

# 寻找父标签中的 id 属性id_ = img.find_parent('span').get("id")

代码运行过程出现 DEBUG 信息,控制 logging 日志输出级别即可。![用python看溧阳摄影圈,里面照片非常真

以上就是关于"怎么利用python实现查看溧阳的摄影圈"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

图片 线程 溧阳 摄影 代码 内容 函数 数据 模块 主题 地址 属性 日志 标签 标题 级别 输出 全局 区域 实例 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 明日之后优化服务器是真的吗 宁波磐天网络技术有限公司 关系模式数据库 关系 利用网络技术和及时沟通 网络技术子网的划分 弹弹奇兵华为怎么找之前的服务器 钦州软件开发外包 上海计算机网络技术应用 软件开发的后台 用什么软件开发外包 php做安卓软件开发 番禺区人民检察院网络安全巡视 ukey登录显示连接服务器失败 力控修改数据库参数后要重启DB 国际服怎么买服务器 mysql怎么连接数据库 数据库系统工程师 培训 服务器怎么连接到笔记本电脑 如何从数据库中阅读论文 江西边缘融合服务器虚拟主机 利用网络技术和及时沟通 阿坝州网络安全宣传活动 涉密网络安全保密有关规定 哈密录音软件开发 怡品天成互联网科技有限公司 协创网络技术怎么样 中国地图版网络技术应用 软件开发一般步骤 嘻嘻网络技术服务 深圳服务器系统运维方案多少钱
0