一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

Karen110 等级 413 0 0

【一、项目背景】

百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢?

今天,小编带大家通过搜索关键字来获取评论区的图片和视频。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

【二、项目目标】

实现把贴吧获取的图片或视频保存在一个文件。

【三、涉及的库和网站】

1、网址如下:

https://tieba.baidu.com/f?ie=utf-8&kw=吴京&fr=search

2、涉及的库:requestslxml、**urrilb**

【四、项目分析】

1、反爬措施的处理

前期测试时发现,该网站反爬虫处理措施很多,测试到有以下几个:

1) 直接使用requests库,在不设置任何header的情况下,网站直接不返回数 据。

2) 同一个ip连续访问40多次,直接封掉ip,起初我的ip就是这样被封掉的。

为了解决这两个问题,最后经过研究,使用以下方法,可以有效解决。

获取正常的 http请求头,并在requests请求时设置这些常规的http请求头。

2、如何实现搜索关键字?

通过网址我们可以发现只需要在kw=() ,括号中输入你要搜索的内容即可。这样就可以用一个{}来替代它,后面我们在通过循环遍历它。

【五、项目实施】

1、创建一个名为BaiduImageSpider的类,定义一个主方法main和初始化方法init。导入需要的库。

import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
    def __init__(self, tieba_name):
        pass
    def main(self):
        pass
if __name__ == '__main__':
    inout_word = input("请输入你要查询的信息:")

    spider.main()
        pass
if __name__ == '__main__':
    spider= ImageSpider()
    spider.main()

2、准备url地址和请求头headers 请求数据。


import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
    def __init__(self, tieba_name):
          self.tieba_name = tieba_name #输入的名字
        self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
        self.headers = {
            'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
        }

    '''发送请求 获取响应'''
    def get_parse_page(self, url, xpath):
        html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
        parse_html = etree.HTML(html)
        r_list = parse_html.xpath(xpath)
        return r_list
    def main(self):
        url = self.url.format(self.tieba_name)
if __name__ == '__main__':
    inout_word = input("请输入你要查询的信息:")
    key_word = parse.quote(inout_word)
    spider = BaiduImageSpider(key_word)
    spider.main()

3、用xpath进行数据分析

3.1、chrome_Xpath插件安装

1) 这里用到一个插件。能够快速检验我们爬取的信息是否正确。具体安装方法如下。

2) 百度下载chrome_Xpath_v2.0.2.crx, chrome浏览器输入:chrome://extensions/

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

3) 直接将chrome\_Xpath\_v2.0.2.crx拖动至该扩展程序页面 ;

4) 如果安装失败,弹框提示“无法从该网站添加应用、扩展程序和用户脚本”,遇到这个问题,解决方法 是:打开开发者模式,将crx文件(直接或后缀修改为rar)并解压成文件夹,点击开发者模式的加载已解压的扩展程序,选择解压后的文件夹,点击确定,安装成功;

3.2、chrome_Xpath插件使用

上面我们已经安装好了chrome_Xpath插件,接下来我们即将使用它。
1) 打开浏览器,按下快捷键F12 。
2) 选择元素,如下图所示。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

3) 右键,然后选择,“Copy XPath”,如下图所示。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

3.3、编写代码,获取链接函数。

上面我们已经获取到链接函数的Xpath路径,接下来定义一个获取链接函数get_tlink,并继承self,实现多页抓取。

 '''获取链接函数'''

    def get_tlink(self, url):
        xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
        t_list = self.get_parse_page(url, xpath)
        # print(len(t_list))
        for t in t_list:
            t_link = "http://www.tieba.com" + t
            '''接下来对帖子地址发送请求  将保存到本地'''
            self.write_image(t_link)

4、保存数据

这里定义一个write_image方法来保存数据,如下所示。


 '''保存到本地函数'''

def write_image(self, t_link):
      xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
        img_list = self.get_parse_page(t_link, xpath)       
        for img_link in img_list:  
            html = requests.get(url=img_link, headers=self.headers).content
            filename = "百度/"+img_link[-10:]

            with open(filename, 'wb') as f:
                f.write(html)
                print("%s下载成功" % filename)

注:@data-video是网址中的视频,如下图所示。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

【六、效果展示】

1、点击运行,如下图所示(请输入你要查询的信息):

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

2、以吴京为例输入,回车:

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

3、将图片下载保存在一个名为“百度”文件夹下,这个文件夹需要你提前在本地新建好。务必记得提前在当前代码的同级目录下,新建一个名为“百度”的文件夹,否则的话系统将找不到该文件夹,会报找不到“百度”这个文件夹的错误。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

4、下图中的MP4就是评论区的视频。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

【七、总结】

1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

2、本文基于Python网络爬虫,利用爬虫库,实现百度贴吧评论区爬取。就Python爬取百度贴吧的一些难点, 进行详细的讲解和提供有效的解决方案。
3、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。学习requests 库的使用以及爬虫程序的编写。
4、通过本项目可以更快的去获取自己想要的信息。

5、需要本文源码的小伙伴,后台回复“百度贴吧”四个字,即可获取。

看完本文有收获?请转发分享给更多的人

IT共享之家

入群请在微信后台回复【入群】

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

**-----**------**-----**---**** 送书 **-----**--------**-----**-****

内容简介

1、《Python神经网络入门与实战》,精通神经网络就这三步:1.零基础入门神经网络——2.进阶掌握神经网络——3.实战搭建属于自己的神经网络,欢迎大家前来取书,共送2本书。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

活动规则

参与方式:在本公众号后台回复 “送书”关键字,记得是“送书”二字哈,即可参与本次的送书活动。

公布时间:2020年12月23号(周三)晚上20点

领取事宜:请小伙伴添加小助手微信: pycharm1314,或者扫码添加好友。添加小助手的每一个人都可以领取一份Python学习资料,更重要的是方便联系。

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

注意事项:一定要留意微信消息,如果你是幸运儿就尽快在小程序中填写收货地址、书籍信息。一天之内没有填写收货信息,送书名额就转给其他人了噢,欢迎参与~

**-----**------**-----**---**** End **-----**--------**-----**-****

往期精彩文章推荐:

一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频

欢迎各位大佬点击链接加入群聊【helloworld开发者社区】:https://jq.qq.com/?_wv=1027&k=mBlk6nzX进群交流IT技术热点。

本文转自 https://mp.weixin.qq.com/s/LGZ0u0kHvY4uAKNFqVMe6Q,如有侵权,请联系删除。

收藏
评论区

相关推荐

python爬虫之数据提取Xpath(爬取起点中文网案例)
(https://blog.csdn.net/sjjsaaaa/article/details/111293732)Xpath 详细的Xpath介绍手册—— https://www.w3school.com.cn/xpa
15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工
本篇文章将给大家介绍 Python 多线程与多进程相关知识,学习完该知识点之后,你的 Python 程序将进入另一个高峰。 <center<font colorred缓解一下视疲劳</font</center 15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工(https://imghelloworld.oss
python装饰器详解
你会Python嘛? 我会! 那你给我讲下Python装饰器吧! Python装饰器啊?我没用过哎 以上是我一个哥们面试时候发生的真实对白。 \分割线
Python解析库lxml与xpath用法总结
本文主要围绕以xpath和lxml库进行展开: 一、xpath 概念、xpath节点、xpath语法、xpath轴、xpath运算符 二、lxml的安装、lxml的使用、lxml案例 一、xpath 1.xpath概念 XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式在 XML 文档中进行导航 。XPath 包含一个标
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
《Python3网络爬虫开发实战》
提取码:1028内容简介 · · · · · ·本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib、requests、正则表达式、Beautiful Soup、XPath、pyquery、数据存储、Ajax数据爬取等内容,接着通过多个案例介绍了不同场景下如何实现数据爬取,后介绍了pyspider框架、S
新手怎么学好python?
我就是从零基础开始学的Python,也算是一个过来人了吧,现在看来当初我也是走了许多弯路,来给大家分享一下我的经验吧。首先是最重要的一点,想清楚你为什么要去学Python?你是想要做一个网站,写一个顺手的工具,还是只要能够通过学校的考试就行,这很大程度的影响了你该如何去学Python,学到什么程度或者是你是否该转去学习另一种语言。如果你只是想做一个个人网站或
Python解析库lxml与xpath用法总结
本文主要围绕以xpath和lxml库进行展开:一、xpath 概念、xpath节点、xpath语法、xpath轴、xpath运算符二、lxml的安装、lxml的使用、lxml案例 一、xpath1.xpath概念XPath 是一门在 XML 文档中查找信息的语言。XPath 使用路径表达式在 XML 文档中进行导航 。XPath 包含一个标准函数库 。XP
Java面试真题解析火爆全网,讲的太透彻了
8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 java内存模型 gc讲讲 http https区别 cookie,session https握手过程 对称非对称加密算法?哪个效率高? tcp握手要三次,挥手要几次,为什么 进程和线程,描述一下 进程通信方式 线程同步
手把手教你使用XPath爬取免费代理IP
大家好,我是霖hero。前言 可能有人说,初学者Python爬虫爬数据太难啦,构造正则表达式的时候,太烦琐了,眼睛都看花了,而且前一秒还可以愉快地爬取,下一秒IP就被封了,这还爬个屁啊,不爬了。哎,不要着急,这篇文章我们教你如何使用XPath来爬取快代理中的免费代理IP,告别眼花,告别IP被封的烦恼。XPath首先我们来简单了解一下XPath,想要了解更多
BAT这种大厂履历意味着什么?面试篇
8.15 一面 (60min) 自我介绍,为什么投客户端 python和java有什么区别 java内存模型 gc讲讲 http https区别 cookie,session https握手过程 对称非对称加密算法?哪个效率高? tcp握手要三次,挥手要几次,为什么 进程和线程,描述一下 进程通信方式 线程同步
手把手教你4种方法用Python批量实现多Excel多Sheet合并
一、前言大家好,我是崔艳飞。前两天给大家分享了Python自动化文章:,而后在Python进阶交流群里边有读者遇到一个问题,他有很多个Excel表格,他需要对这些Excel文件进行合并。诚然,一个一个打开复制粘贴固然可行,但是该方法费时费力,还容易出错,几个文件还可以手动处理,要是几十个甚至上百个,你就抓瞎了,不过这问题对Python来说,so easy,一
纯干货:手把手教你用Python做数据可视化(附代码)
前言Hi,大家好,又见面了,我是Python进阶者,废话不多说,直接开始肝吧,奥里给!爬虫管理效果图依赖包 文件:requirements.txt‍‍‍‍‍‍‍‍‍文件的内容这里直接贴出来了: appdirs1.4.4APScheduler3.5.1attrs20.1.0Automat20.2.0beautifulsoup44.9.1certifi202
一篇文章教会你利用Python网络爬虫抓取百度贴吧评论区图片和视频
【一、项目背景】    百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢? 今天,小编带大家通过搜索关键字来获取评论区的图片和视频。 【二、项目目标】    实现把贴吧获取的图片或视频保存在一个文件。 【三、涉及的库和网站】1、网址如下:https://tieba.baidu.com/f?ie