目的:在百度贴吧输入关键字和要查找的起始结束页,获取帖子里面楼主所发的图片

思路:

  1. 获取分页里面的帖子链接列表
  2. 获取帖子里面楼主所发的图片链接列表
  3. 保存图片到本地

注意事项:

  • 问题:在谷歌浏览器使用xpath helper插件时有匹配结果,但在程序里面使用python内带的xpath匹配却为空的原因。

  • 原因:不同服务器会对不同的浏览器返回不同的数据,导致在谷歌浏览器看到的和服务器返回的有区别

  • 解决方法:使用IE浏览器的User-agenet,而且越老的版本,报错几率相对越小

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2
import urllib
import os
from lxml import etreekeyword = raw_input('请输入要查询的关键字: ')keyword = {'kw':keyword}kw = urllib.urlencode(keyword)startpage = raw_input('请输入开始页数: ')endpage = raw_input('请输入结束页数: ')url = 'https://tieba.baidu.com/f' + '?' + kwprint('开始下载...')# 计算下载的图片个数,注意:变量n如放在最外层循环,可以统计每个分页图片个数
n = 0# 获取分页里面帖子链接列表,获取每个帖子里楼主所发的图片链接列表,保存图片# 获取帖子链接列表
for page in range(int(startpage),int(endpage)+1):pnumber = {'pn': str((page - 1)*50)}pnumber = urllib.urlencode(pnumber)fullurl = url + '&' + pnumber# 发现使用谷歌浏览器的User-Agent,会导致后面的xpath匹配结果有时为空。原因:服务器会对不同的浏览器发出的同一请求返回不同格式的数据,此时返回的数据和在谷歌浏览器里面看到的数据不同。# 解决办法:使用IE浏览器的User-Agent,因为IE的相对来说更标准,而且版本越老问题越少。headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"}request = urllib2.Request(fullurl,headers=headers)response = urllib2.urlopen(request)html = response.read()# 解析html 为 HTML DOM文档content = etree.HTML(html)# xpath使用下面括号内容进行匹配,使用a的属性使用了class='j_th_tit'去过滤广告则匹配结果为空;换成a的属性rel="noreferrer"就解决。为啥换不清楚。思路,这个属性不行换个属性。# 获取每个分页里面的帖子的链接列表link_list = content.xpath('//div[@class="threadlist_lz clearfix"]/div/a[@rel="noreferrer"]/@href')# 获取该帖子楼主所发的图片链接列表for link in link_list:link = 'https://tieba.baidu.com' + link request2 = urllib2.Request(link,headers=headers)response2 = urllib2.urlopen(request2)html2 = response2.read()# 把html字符串解析为html domcontent2 = etree.HTML(html2)# 使用xpath匹配其里面层主所发的图片的链接link_list2 = content2.xpath('//img[@class="BDE_Image"]/@src')# 遍历图片链接列表,保存图片到文件夹images内for link2 in link_list2:request3 = urllib2.Request(link2,headers=headers)response3 = urllib2.urlopen(request3)html3 = response3.read()# 指定文件名filename = link2[-10:]n += 1print('正在保存第 %3d 张图片'%n)# html3为返回的图片内容,把图片写入images2文件夹内with open('images' + '/' + filename,'wb') as f:f.write(html3)print('下载结束!')

转载于:https://www.cnblogs.com/silence-cc/p/9232989.html

使用python2爬取百度贴吧指定关键字和分页帖子楼主所发的图片相关推荐

  1. python爬取百度贴吧指定内容

    环境:python3.6 1:抓取百度贴吧-linux吧内容 基础版 抓取一页指定内容并写入文件 萌新刚学习Python爬虫,做个练习 贴吧链接: http://tieba.baidu.com/f?k ...

  2. Scrapy 爬取百度贴吧指定帖子的发帖人和回帖人

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  3. 爬取百度贴吧用户的帖子

    在基于Python爬虫实战二之爬取百度贴吧帖子的项目–崔庆才(http://cuiqingcai.com/993.html),该项目最终爬取一个贴子的所有楼层或者只看楼主. 想到自己可以爬取一个用户的 ...

  4. 爬取百度贴吧内某吧指定页数的html页面

    爬取百度贴吧内某吧指定页数的html页面 首先创建文件夹tieba,代码使用面向对象的思想进行封装,测试爬取的页数为前10页, 代码如下: import requests import time im ...

  5. python tkinter界面 多进程启动scrapy爬取百度贴吧的回复,显示爬取进度,并可以搜索回帖人,指定时间生成词云图,用pyinstaller打包成exe(七)

    爬取单个帖子one_tiezi_spider.py ''' 这个是爬取 单个帖子的爬虫 大概思路:          1.进入该帖子的第1页,获取帖子的初始信息(标题.发帖人.tid.总页数)等    ...

  6. python爬取贴吧所有帖子-Python爬虫实例(一)爬取百度贴吧帖子中的图片

    程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 ?后面为查询字 ...

  7. 爬取百度知道分类_百度指数爬虫|介绍篇

    简单介绍 前段时间帮别人写了几个爬虫,其中有一个是爬取百度指数.绝大多数人应该都知道这个东西,我在这里再说明一下哈! 百度指数是百度提供的可以查看人们每天搜索关键词的次数的功能,具体长下面这个样子: ...

  8. pyhon3爬取百度搜索结果

    前不久为了在群里斗图,想多搜集点表情包学习了一下python爬虫,搜集了一万多张吧.下载太多,完全不知道有什么图,还是斗不过!!!!! 今天又想爬取百度的搜索结果,本人还是小白,怕忘记记录一下,望大神 ...

  9. python爬取百度搜索_使用Python + requests爬取百度搜索页面

    想学一下怎样用python爬取百度搜索页面,因为是第一次接触爬虫,遇到一些问题,把解决过程与大家分享一下 1.使用requests爬取网页 首先爬取百度主页www.baidu.com import r ...

最新文章

  1. IO操作Dex文件加密,APK加固项目实战
  2. flex 读取外部txt文件时候出现中文乱码现象
  3. 效率低下?是管理者无能?还是“太宽容”?
  4. 计算广告 读书笔记 计算广告的核心问题
  5. c语言指针怎样代替二维数组,c语言 指针和二维数组
  6. springboot超级详细的日志配置(基于logback)
  7. java中字节码_Java字节码执行图示
  8. Python 带界面的可执行程序
  9. notepad格式化html代码快捷键,Notepad++中代码格式化插件NppAStyle使用介绍
  10. spring framwork解析
  11. pythonclass使用教程_【Python 1-15】Python手把手教程之——详解类Class以及类的使用...
  12. jvm3---垃圾回收器算法
  13. 广州天河租房随笔记录
  14. 魅族手机无信号无服务器,魅族手机没有信号的解决教程
  15. 广告投放系统后台html,今日头条广告如何投放?今日头条广告后台操作说明
  16. css span img,css设置span和img垂直居中(设置line-height失效)
  17. ftl模板导出excel_freemarker导出Excel
  18. 《ERP高级计划》书解读-APS案例分析之四缓冲的计算(蔡颖)(转)
  19. Linux挂载Windows网络共享文件夹
  20. 面试官问你为什么选择做客服_在线客户服务-您的选择

热门文章

  1. QQ玩一玩好友排行榜与世界排行榜
  2. 工业互联网:8 行业应用(1)
  3. STM32移植LVGL(LittleVGL)
  4. 人工智能建筑师博士, 创立AIG建筑智能研究组
  5. 【Android opencv 环境配置记录】
  6. 利用python制作漂亮的词云图_利用python制作词云,wordcloud神器你值得拥有
  7. 什么是萃取茶?萃取茶和泡茶有什么区别?
  8. WPS本地备份——C盘杀手
  9. 配置yum的163repo源
  10. 毕业设计 - python选题汇总