python爬虫-抓取百度贴吧帖子图片

简介: 本爬虫可以爬取百度贴吧帖子中的图片,代码有待完善,欢迎大家指教!出处:https://github.com/jingsupo/python-spider/blob/master/day03/07tieba.

本爬虫可以爬取百度贴吧帖子中的图片,代码有待完善,欢迎大家指教!
出处:https://github.com/jingsupo/python-spider/blob/master/day03/07tieba.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import requests, time
from lxml import etree


class Tiebaspider(object):
    def __init__(self, tiebaname, start_page, end_page):
        self.base_url = "http://tieba.baidu.com"
        self.headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"}
        self.name = tiebaname
        self.start = start_page
        self.end = end_page

        # 第一层解析 xpath
        self.first_xpath = '//div[@class="t_con cleafix"]/div/div/div/a/@href'
        # 第二层解析 xpath
        self.second_xpath = '//img[@class="BDE_Image"]/@src'

    # 发送请求
    def send_request(self, url, params={}):
        time.sleep(1)
        try:
            response = requests.get(url, params=params, headers=self.headers)
            return response.content
        except Exception as e:
            print e

    # 写入文件
    def write_file(self, data, page):
        print page
        filename = 'tieba/' + page
        with open(filename, 'w') as f:
            f.write(data)

    # 解析数据
    def parse_data(self, data, xpath):
        # 转换html类型
        html_data = etree.HTML(data)
        # 解析
        data_list = html_data.xpath(xpath)

        return data_list

    # 调度运行
    def run(self):
        for page in range(self.start, self.end + 1):
            pn = (page - 1) * 50
            params = {
                'kw': self.name,
                'pn': pn
            }

            # 发送第一次请求
            first_response = self.send_request(self.base_url + '/f?', params=params)
            # 解析提取子链接 每一条单独的帖子
            first_data_list = self.parse_data(first_response, self.first_xpath)

            # 请求每条帖子的数据
            for link in first_data_list:
                # 拼接每条帖子的url
                url = self.base_url + link

                # 发送第二次请求
                second_response = self.send_request(url)
                # 解析提取每个帖子里面的图片地址
                second_data_list = self.parse_data(second_response, self.second_xpath)

                # 发送图片请求 保存图片到本地
                for img_url in second_data_list:
                    # 发送请求
                    image_file = self.send_request(img_url)
                    # 截取图片链接后15位作为文件名
                    page = img_url[-15:]
                    # 保存图片
                    self.write_file(image_file, page)


if __name__ == '__main__':
    tiebaname = '美女'
    start_page = 1
    end_page = 1

    spider = Tiebaspider(tiebaname, start_page, end_page)
    spider.run()
目录
相关文章
|
2月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
2月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
2月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
2月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
8月前
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
558 6
|
8月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1183 31
|
7月前
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
862 4
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
259 4

推荐镜像

更多