1. # -*- coding:utf-8 -*-
  2. import urllib, urllib2
  3. import re
  4. import sys
  5.  
  6. class Cuzz():
  7. """这是一个类"""
  8. def __init__(self, url, header, start_page, end_page):
  9. self.url = url
  10. self.header = header
  11. self.start_page = start_page
  12. self.end_page = end_page
  13.  
  14. def deal_url(self):
  15. """处理url"""
  16. for i in range(self.start_page, self.end_page+1):
  17. num = 50*(i-1)
  18. url = self.url+str(num)
  19. request = urllib2.Request(url, headers=self.header)
  20. response = urllib2.urlopen(request)
  21. htmltext = response.read()
  22. self.load_images(htmltext)
  23.  
  24. def load_images(self, htmltext):
  25. """下载图片"""
  26. # 找出这一页的所有帖子类似这样的/p/1111111111
  27. pattern = re.findall(r"/p/\d+", htmltext)
  28. for temp in pattern:
  29. url = "http://tieba.baidu.com" + temp
  30. request = urllib2.Request(url, headers=self.header)
  31. response = urllib2.urlopen(request)
  32. htmltext1 = response.read()
  33. self.save_images(htmltext1)
  34.  
  35. def save_images(self, htmltext1):
  36. """保存到本地"""
  37. image_links = re.findall(r"https://imgsa\.baidu.+?\.jpg",htmltext1)
  38. for url in image_links:
  39. request = urllib2.Request(url, headers=self.header)
  40. response = urllib2.urlopen(request)
  41. htmltext1 = response.read()
  42. print htmltext1
  43. with open("./images/"+str(url[-10:-1]), "w") as f:
  44. f.write(htmltext1)
  45.  
  46. def main():
  47. """控制"""
  48. header = {"User-Agent":"Mozilla/5.0(WindowsNT6.1;rv:2.0.1)Gecko/20100101Firefox/4.0.1"}
  49. title = raw_input("请输入您要下载的贴吧:")
  50. keyword = {"kw":title} # 是一个字典的格式,转换后"kw=%34dgfdg%fg
  51.  
  52. keyword = urllib.urlencode(keyword) # 有中文需要转成url的格式
  53.  
  54. url = "https://tieba.baidu.com/f?" + keyword + "&ie=utf-8&pn="
  55.  
  56. start_page = int(raw_input("请输入起始页面:"))
  57. end_page = int(raw_input("请输入截止页面:"))
  58.  
  59. cuzz = Cuzz(url, header, start_page, end_page)
  60. cuzz.deal_url()

GET请求/百度贴吧 有bug的更多相关文章

  1. ios/iphone手机请求微信用户头像错位BUG及解决方法

    转:http://www.jslover.com/code/527.html ios/iphone手机请求微信用户头像错位BUG及解决方法 发布时间:2014-12-01 16:37:01 评论数:0 ...

  2. 多线程、多进程、协程、IO多路复用请求百度

    最近学习了多线程.多进程.协程以及IO多路复用,那么对于爬取数据来说,这几个方式哪个最快呢,今天就来稍微测试一下 普通方式请求百度5次 import socket import time import ...

  3. 关于百度分享——bdCustomStyle一点bug

    最近碰到一个项目,因为用上百度分享,出现了奇怪的bug. 具体是,当访问JSP页面时,js脚本会执行一次,而java脚本执行了两次. 最后排查发现是百度分享js脚本的问题,把"bdCusto ...

  4. jsonp跨越请求百度搜索api 实现下拉列表提示

    题目来源: 最近在做百度IFE前端技术学院的题,然后有一题就是模拟百度搜索智能提示.题目是开源的,稍后给出地址. 因为博主没学过后端啊,欲哭无泪,所以不能实现后端模糊搜索,那如果前端ajax纯粹请求一 ...

  5. 百度地图 javascript相关Bug搜集

    一 在手机里用百度地图js版做webapp   bug集合 1 之前用2.0版本的时候发现只要地图添加了覆盖物,无论数量多少,当地图放大到很小的范围时候,会卡死 1.1 当时处理办法:将版本降低至1. ...

  6. angular2jsonp如何跨域请求百度API进行定位

    前提,百度api的申请,不会的可以百度一下,下面是连接 http://lbsyun.baidu.com/index.php?title=webapi/ip-api 1.appMoudle里引入 imp ...

  7. 腾讯云图片鉴黄集成到C# SQL Server 怎么在分页获取数据的同时获取到总记录数 sqlserver 操作数据表语句模板 .NET MVC后台发送post请求 百度api查询多个地址的经纬度的问题 try{}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的 code 会 不会被执行,什么时候被执行,在 return 前还是后? js获取某个日期

    腾讯云图片鉴黄集成到C#   官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: public c ...

  8. AJax跨域请求百度音乐接口数据展示页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. vue-resource: jsonp请求百度搜索的接口

    1. yarn add vue-resource 2. main.js引入vue-resource import Vue from 'vue' import MintUI from 'mint-ui' ...

随机推荐

  1. 基于IWICImage的截图代码

    截图方式和以前一样, 用GetDC, 保存为JPG的方式改用IWICImage接口, 在我机器上 1920*1080 大概花费70毫秒左右, 比用TJPEGImage快了一倍多(TJPEGImage需 ...

  2. web前端vertical-align的作用及对象详解

    很多程序员知道web前端技术里的vertical-align是什么意思,但是对于vertical-align到底以什么为对齐标准却一知半解,今天我们就来说说web前端vertical-align. 1 ...

  3. 百度统计的JS脚本原理分析

    首先,百度统计会要求我们在要统计的页面中嵌入一段js语句,类似如下: <script type="text/javascript">var _bdhmProtocol ...

  4. spring aop使用

    最近做一个数据库分离的功能,其中用到了spring aop,主要思路就是在service层的方法执行前根据注解(当然也可以根据方法名称,如果方法名称写的比较统一的话)来判断具体使用哪个库.所以想着再回 ...

  5. ubuntu16.04安装交叉编译链

    我使用的是arm-linux-gcc 4.3.2版本,其他版本类似,附上下载链接: https://pan.baidu.com/s/1geUOfab 密码: frzy 首先我的安装包是tar.bz2的 ...

  6. [线段树]P1047 校门外的树

    题目描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,……,L,都种 ...

  7. jQuery与别的js框架冲突

    jQuery.noConflict()运行这个函数将变量$的控制权让渡给第一个实现它的那个库. 这有助于确保jQuery不会与其他库的$对象发生冲突. <script type="te ...

  8. Python之三目运算符

    Python语言不像Java.JavaScript等这些语言有类似: 判段的条件?条件为真时的结果:条件为假时的结果 这样的三目运算,但是Python也有自己的三目运算符: 条件为真时的结果 if 判 ...

  9. css中的float和position

    1.float <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  10. 初识NumPy库-基本操作

    ndarray(N-dimensional array)对象是整个numpy库的基础. 它有以下特点: 同质:数组元素的类型和大小相同 定量:数组元素数量是确定的 一.创建简单的数组: np.arra ...