给定感兴趣的贴吧首页,自动获取帖子的链接

进入获取到的链接中,将帖子内的图片链接提取出来

按照帖子的ID建文件夹,将帖子内图片的链接下载为图片保存到文件夹中

实现过程:

每一个帖子的链接都是

href="/p/xxxxxxxxxx"

再打开对应帖子的链接,发现该帖子正是

http://tieba.baidu.com/p/xxxxxxxxx

所以获取文章链接的思路很简单:

获取到标题的href这个属性的内容,前面加上http://tieba.baidu.com/就是最终的帖子链接:

LinkSelector = AirticleFilter.xpath('//div[@class="threadlist_lz clearfix"]/div/a/@href')

获取帖子中每个楼层所包含的图片链接:

这里会有一个坑,如果你直接从chrome中审查元素,定位到图片所在的xpath,有可能是获取不到真正的链接的,而有可能获取到“loading.gif”!这是因为,图片在加载时比较慢,网页先下载一个小的动画图片显示loading,待下载完成之后再显示真正的图片。不过好在在每一个包含图片的楼层中的头部信息中都包含了文件的类型,图片的大小,图片的链接地址,以及图片是否为用户上传的图片等信息:

经过摸索,我们要提取的是包含有的节点信息,该节点中有图片的实际链接src="http:\\XXXXXXXX"

BackGroundLink = BackGroundFilter.xpath('//div[@class="l_post l_post_bright j_l_post clearfix "]')

ImgSrc = etree.HTML(reply_info['content']['content'])

ImgLink = ImgSrc.xpath('//img[@class="BDE_Image"]/@src')

以上xpath首先获取到楼层,然后获取到楼层中的content信息,然后将content信息作为html文件再次分析,获取到包含class="BDE_Image"的图片的src。

根据帖子ID建立文件夹

建立文件夹可以使用os库的mkdirs方法,注意,如果是mkdir方法则只能创建一层目录。

def MakeDir(TargetDir,FolderName):

new_path = os.path.join(TargetDir,FolderName)

if(not os.path.isdir(new_path)):

os.makedirs(new_path)

os.chdir(new_path)

最终代码:

#-*-coding:utf8-*-

from lxml import etree

import SaveLinkIntoFile

import requests

import re

import os

import GetTiebaImg

def GetArticleLinks(url):

TiebaUrlprefix = 'http://tieba.baidu.com'

html = requests.get(url)

html = re.sub(r'charset=(/w*)', 'charset=UTF-8', html.text)

AirticleFilter = etree.HTML(html)

#print(html)

LinkSelector = AirticleFilter.xpath('//div[@class="threadlist_lz clearfix"]/div/a/@href')

for i in range(len(LinkSelector)):

foldername = LinkSelector[i].strip().lstrip().rstrip('/').replace('/','')

print(foldername)

MakeDir("D:\Python_Cache",foldername)

LinkSelector[i] = TiebaUrlprefix + LinkSelector[i]

GetTiebaImg.GetTiebaImg([LinkSelector[i]])

os.chdir("../")

print(LinkSelector)

return LinkSelector

# print("the number of links:{0}".format(len(LinkSelector)))

# for each in LinkSelector:

# print("The links:{0}".format_map(each[0]))

def MakeDir(TargetDir,FolderName):

new_path = os.path.join(TargetDir,FolderName)

if(not os.path.isdir(new_path)):

os.makedirs(new_path)

os.chdir(new_path)

# print("the Current dir is:{0}".format(os.getcwd()))

# os.chdir("../")

# print("the Current dir is:{0}".format(os.getcwd()))

if __name__ == '__main__':

MakeDir("D:\Python_Cache","Cache1")

TiebaUrl = 'http://tieba.baidu.com/f?kw=%E5%A3%81%E7%BA%B8&ie=utf-8'

GetArticleLinks(TiebaUrl)

运行效果:

python爬虫百度贴吧代码大全_获取贴吧图片的python爬虫相关推荐

  1. python爬虫百度贴吧代码大全_零基础写python爬虫之抓取百度贴吧代码分享

    这里就不给大家废话了,直接上代码,代码的解释都在注释里面,看不懂的也别来问我,好好学学基础知识去! # -*- coding: utf-8 -*- #------------------------- ...

  2. python天勤金叉编程代码大全_天勤终端数据解决方案

    作者:金属成色 目录 环境准备 如果没有安装vn.py最新发行版(这里默认为vnpy-1.7.1).MongoDB.Anaconda.PyCharm软件,请参照右边'环境安装'教程. 对于天勤数据解决 ...

  3. python天勤金叉编程代码大全_这些Python编程黑科技,装逼指南,高逼格代码,让你惊叹不已...

    1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的都 ...

  4. python画心形代码大全_情人节锦囊:简单的python表白程序(动画效果)

    今年这个特殊的情人节,如何优雅而又高大上地对自己的心爱女神表白? ? ? 猫老师给你送上锦囊,试试python表白的实现方式吧,是动画版的哦,保证可以如你所愿 ! ! ! 1.动态玫瑰花 代码如下图: ...

  5. python基础代码大全-python零基础入门命令方式汇总大全,快速恶补你的Python基础...

    原标题:python零基础入门命令方式汇总大全,快速恶补你的Python基础 无意中浏览到这篇来自大牛的分享,总结的很全面,我重新排版下放在这里,希望能帮助到大家.在此十分感谢原作者! 在开始之前还是 ...

  6. 每次打开百度太麻烦?用程序直接打开网页 Python实现百度划词搜索功能(获取剪切板数据)

    浏览顺序 实现划词功能 运行错误 解决问题 转载声明 实现划词功能 说是划词翻译,实际上我们是通过获取用户的剪切板内容,通过一系列的操作得到的.首先呢,我们就先实现如何获取剪切板内容的程序 首先先在桌 ...

  7. python爬图片代码大全_爬虫入门教程⑩— 用漂亮的图表展示爬取到的数据

    经过了前面的努力,我们成功获取到了数据,并且学会了保存,但是只是用网页展示出来,是不是有一些不够美观呢? 所以本节的内容是:数据的可视化.拿到了数据却不能使其简单易懂并且足够突出,那就是不是好的数据工 ...

  8. 动漫的python语言代码大全_使用Python来看看动漫中的你

    百度人工智能运用世界领先的对抗生成网络,结合人脸检测.头发分割.人像分割等技术,为用户量身定制千人千面的二次元动漫形象,并且可通过参数设置,生成戴口罩的二次元动漫人像. 先来一组图看看效果 八种口罩任 ...

  9. 动漫的python语言代码大全_下载动漫壁纸-Python代码

    本帖最后由 我心她有丶 于 2020-4-16 19:28 编辑 前段时间在论坛找到一个下载动漫壁纸的软件,还挺好用的,这几天突然用一下,下载不出图片,下载的一片白,然后分析了下他的软件,得到了一个地 ...

最新文章

  1. 关于网络线与电话线共用之体会
  2. eclipse 打开时候,弹出来 JVM terminated Exit code=2
  3. c语言程序设计江宝钏第九章,C语言程序设计 (江宝钏 著) 清华大学出版社 第9章习题答案1...
  4. 滴滴2017在线笔试有感
  5. java的创建管理员对象_java--更改管理员密码,请列位帮忙看看有没有更好的实现方式...
  6. app分发源码_第三方苹果企业签名源码
  7. SFINAE 应用1
  8. 松翰单片机SN8P2711AD实现AD转换的C语言程序例子
  9. 一个屌丝程序猿的人生(十七)
  10. mysql explain关键字解析
  11. 推荐几款极简的手机浏览器
  12. 【shell】test用法
  13. 论文笔记 | 基于深度学习的乳腺转移瘤识别(Deep Learning for Identifying Metastatic Breast Cancer)
  14. 三星 j3 android 8.0,三星J3 Pro官方台湾版安卓8.0固件线刷包:BRI-J330GDXS3BSF5
  15. 2022.12六级真题第3套(共6页)
  16. 华为云服务器ping不通或无法访问
  17. 关于多线程MT和MD的区别。
  18. 国家何时整治程序员的高薪现象
  19. 寺冈labelnet使用说明_寺冈DI-162技术手册
  20. foreign 磁盘阵列_联想服务器导入清除foreign阵列信息

热门文章

  1. windows依赖服务或组无法启动的解决办法
  2. python随机打乱一个文本中每行数据
  3. CSDN博客大事日记1
  4. Anfis-基于模糊推理的自适应神经网络程序(免费分享)
  5. CMS指纹识别 绕过cdn查找网站真实ip借助网络空间搜索引擎
  6. vb手动输入字符串(SQL语句)太长时 怎么换行输入
  7. 类似于qq魔法表情的窗口
  8. python路径规划算法可视化_[大创]一步一步写路径规划并绘图可视化 I new
  9. Python办公自动化的18个应用场景
  10. 使用protege过程中的一些小技巧