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()
目录
相关文章
|
5天前
|
数据采集 存储 大数据
Python爬虫:数据获取与解析的艺术
随着大数据时代的到来,数据的重要性日益凸显。Python作为一种易学易用的编程语言,在数据处理和分析方面有着丰富的库支持。其中,爬虫是获取数据的重要手段之一。本文将介绍Python爬虫的基本概念、常用库以及实战案例。
36 0
|
13天前
|
数据采集 数据安全/隐私保护 Python
python-爬虫-selenium总结
python-爬虫-selenium总结
python-爬虫-selenium总结
|
15天前
|
数据采集 中间件 Shell
Python爬虫深度优化:Scrapy库的高级使用和调优
在我们前面的文章中,我们探索了如何使用Scrapy库创建一个基础的爬虫,了解了如何使用选择器和Item提取数据,以及如何使用Pipelines处理数据。在本篇高级教程中,我们将深入探讨如何优化和调整Scrapy爬虫的性能,以及如何
|
21天前
|
数据采集 Python
python 爬虫 佛山区域,爬取餐厅的商户联系人公开号码,实例脚本
python 爬虫 佛山区域,爬取餐厅的商户联系人公开号码,实例脚本
|
22天前
|
数据采集 JSON 前端开发
Python爬虫进阶:使用Scrapy库进行数据提取和处理
在我们的初级教程中,我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中,我们将深入了解Scrapy的强大功能,学习如何使用Scrapy提取和处理数据。
|
29天前
|
数据采集 JavaScript API
Python爬虫抓取经过JS加密的API数据的实现步骤
Python爬虫抓取经过JS加密的API数据的实现步骤
|
30天前
|
数据采集 人工智能 Java
Python爬虫获取电子书资源实战
最近在学习Python,相对java来说python简单易学、语法简单,工具丰富,开箱即用,适用面广做全栈开发那是极好的,对于小型应用的开发,虽然运行效率慢点,但开发效率极高。大大提高了咱们的生产力。为什么python能够在这几年火起来,自然有他的道理,当然也受益于这几年大数据和AI的火。据说网络上80%的爬虫都是用python写的,不得不说python写爬虫真的是so easy。基本上一个不太复杂的网站可以通过python用100多行代码就能实现你所需要的爬取。
99 1
Python爬虫获取电子书资源实战
|
30天前
|
数据采集 关系型数据库 MySQL
|
30天前
|
数据采集 存储 中间件
|
30天前
|
数据采集 JavaScript 前端开发
相关产品
云迁移中心
推荐文章
更多