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

今天,本期Python教程带大家通过搜索关键字来获取评论区的图片和视频。

acdb06e5a4fb

【二、项目目标】

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

【三、涉及的库和网站】

1、网址如下:

2、涉及的库:requests、lxml、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/

acdb06e5a4fb

3) 直接将chrome_Xpath_v2.0.2.crx拖动至该扩展程序页面 ;

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

3.2、chrome_Xpath插件使用

上面我们已经安装好了chrome_Xpath插件,接下来我们即将使用它。

1) 打开浏览器,按下快捷键F12 。

2) 选择元素,如下图所示。

acdb06e5a4fb

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

acdb06e5a4fb

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)

如下图:

acdb06e5a4fb

【六、效果展示】

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

acdb06e5a4fb

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

acdb06e5a4fb

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

acdb06e5a4fb

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

acdb06e5a4fb

总结:

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

2、本文基于Python网络爬虫,利用爬虫库,实现百度贴吧评论区爬取。就Python爬取百度贴吧的一些难点, 进行详细的讲解和提供有效的解决方案。

3、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。学习requests 库的使用以及爬虫程序的编写。

百度贴吧界面html程序代码,python爬虫例题:爬取百度贴吧评论区图片和视频相关推荐

  1. python爬虫之爬取百度网盘

    爬虫之爬取百度网盘(python) #coding: utf8 """ author:haoning create time: 2015-8-15 "" ...

  2. python爬虫(13)爬取百度贴吧帖子

    爬取百度贴吧帖子 一开始只是在网上看到别人写的爬取帖子的文章,然后自己就忍不住手痒自己锻炼一下, 然后照着别人的写完,发现不太过瘾, 毕竟只是获取单个帖子的内容,感觉内容稍显单薄,然后自己重新做了修改 ...

  3. python爬虫:爬取百度小姐姐照片

    自从学会了爬虫,身体状况一天不如一天,营养都跟不上了,教大家爬取百度性感小姐姐的图片,先看一下效果. 项目流程 第一步:准备工作 工欲善其事,必先利其器 pip install requests,该模 ...

  4. Python爬虫:爬取百度图片(selenium模拟登录,详细注释)

    1.驱动下载 百度图片这种网站是动态的,即并不是网页中的内容全部存储在源代码中,而是不停地动态刷新,所以需要使用selenium模拟浏览器登录,除了安装selenium库之外,还需要针对不同地浏览器安 ...

  5. Python爬虫——关键字爬取百度图片

    在日常生活中,我们经常需要使用百度图片来搜索相关的图片资源.而如果需要大量获取特定关键字的图片资源,手动一个个下载无疑十分繁琐且费时费力.因此,本文将介绍如何通过Python爬虫技术,自动化地获取百度 ...

  6. python爬虫——批量爬取百度图片

    最近做项目,需要一些数据集,图片一张一张从网上下载太慢了,于是学了爬虫. 参考了大佬的文章:https://blog.csdn.net/qq_40774175/article/details/8127 ...

  7. Python爬虫,爬取百度贴吧图片和视频文件,xpath+lxml,访问被拒的原因分析

    目录 百度贴吧图片和视频文件爬取程序 1.需求分析 2.url分析 3.Xpath分析 4.程序设计 5.坑点 百度贴吧图片和视频文件爬取程序 1.需求分析 进入百度贴吧,搜索周杰伦,进入周杰伦吧.我 ...

  8. python爬虫之爬取百度翻译

    使用python中requests模块就可以爬取 import requestspost_url = 'https://fanyi.baidu.com/sug' headers = {'User-Ag ...

  9. python爬虫之爬取网易云音乐的歌曲图片和歌词

    0.目录 1.分析页面 2.获取歌曲的id 3.获取歌曲信息 4.获取歌曲图片url 5.获取歌词 6.总结 7.完整代码 1.分析页面 这一次我们来爬取网易云音乐,爬取歌单内的所有歌曲的图片和歌词, ...

最新文章

  1. 数据结构之折半插入排序图文详解及代码(C++实现)
  2. 从零售商加速向零售平台进化,每日优鲜已经成为“生鲜电商第一股”
  3. centos6下时间同步(ntp)操作
  4. Enumeration和Iterator的区别
  5. [xsy3343]程序锁
  6. 计算机高职考理论知识,考计算机基础知识理论试题
  7. 从WildFly 9(子系统)中运行OkHttpClient
  8. 【牛客 - 210A】游戏(思维,脑洞)
  9. 查看linux IO地址范围
  10. python字典怎么添加值_python字典中如何添加键值对
  11. javascript 停止事件冒泡以及阻止默认事件冒泡
  12. php将文件转换为utf-8,PHP-将邮件正文转换为UTF-8
  13. 真正想创业,做一番事业的人是什么样子的?
  14. 快排 递归与非递归实现 优化
  15. 纽微特反省:别人犯错不敢说,那是因为自己不干活
  16. 吉林大学计算机网络考研知识点整理
  17. 解决win10cmd乱码
  18. 机器视觉该怎么样系统学习
  19. Just For Fun
  20. (面经总结)一篇文章带你完整复习 Java 中并发关键字(CountDownLatch/CyclicBarrier/Semaphore/Volatile)

热门文章

  1. android开发教程,android开发入门教程
  2. Apache 的配置与应用
  3. 艰难的跨越 融合处理器GPU单元现状分析
  4. 如何在word文档中间插入起始页码!!!
  5. 绿茶GhostXP SP3纯净版系统虚拟机安装教程
  6. java实现用户登录异常统计、锁定及解锁功能
  7. 《黑客与画家》书评——lisp教主驾临
  8. Excel批量数据拼接转换为 insert 插入语句
  9. 计算机专业考ACCA有用吗,大学哪些专业更适合考ACCA?
  10. 小心!疯狂科技“秒变”疯狂骗局