umei-spider

 1 #!/usr/bin/python3
2
3 import requests
4 from bs4 import BeautifulSoup
5 from contextlib import closing
6 import time
7 import uuid
8
9
10 class SevenOneSixZero:
11 def __init__(self):
12 self.photo_id = []
13 self.url = 'http://www.umei.cc/tags/xiezhen_1.htm'
14 self.urls = []
15 self.headers = {
16 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
17 }
18
19 def get_ids(self):
20 res = requests.get(url=self.url, headers=self.headers)
21
22 def get_page_content(self, url):
23 res = requests.get(url, headers=self.headers)
24 r = res.text
25 # response.encoding是指从HTTP的header中猜测的响应内容编码方式 如果header中不存在charset,则默认编码为ISO-8859-1
26 # print(res.encoding)
27 # response.apparent_encoding是指从内容中分析出的响应内容编码方式。
28 # print(res.apparent_encoding)
29 # requests内部的 utils 也提供了一个从返回 body 获取页面编码的函数get_encodings_from_content,这样如果服务器返回的头不含 Charset,再通过 get_encodings_from_content 就可以知道页面的正确编码了
30 # print(requests.utils.get_encodings_from_content(r))
31 return r.encode(res.encoding).decode(res.apparent_encoding)
32
33 def get_img(self):
34 res = self.get_page_content(self.url)
35 soup = BeautifulSoup(res, 'lxml')
36 img_list = soup.select('body > div.wrap > div.TypeList > ul > li > a > img')
37 return img_list
38
39 def get_img_src_list(self):
40 img_list = []
41 for img in self.get_img():
42 img_dict = {
43 'src': img.get('src')
44 }
45 img_list.append(img_dict)
46 return img_list
47
48 def download_img(self, img_list):
49 """
50 下载图片
51 :param img_list:
52 :return:
53 """
54 i = 0
55 for img_dic in img_list:
56 # time.sleep(0.1)
57 src = img_dic['src']
58 res = requests.get(src, self.headers)
59 i = i + 1
60 with closing(res) as r:
61 name = uuid.uuid1()
62 with open('D:/python/imgs/{}.jpg'.format(name), 'ab+') as f:
63 for chunk in r.iter_content(chunk_size=1024):
64 if chunk:
65 f.write(chunk)
66 f.flush()
67 print('成功下载第{}张图:{}.jpg'.format(i,name ))
68
69 def get_url_list(self, start, end):
70 """
71 获取url列表
72 :param start:
73 :param end:
74 :return:
75 """
76 for i in range(start, end):
77 self.urls.append('http://www.umei.cc/tags/xiezhen_{}.htm'.format(i))
78 return self.urls
79
80
81 if __name__ == '__main__':
82 seven = SevenOneSixZero()
83
84 for url in seven.get_url_list(22, 30):
85 seven.url = url
86 img_list = seven.get_img_src_list()
87 seven.download_img(img_list)

最新文章

  1. grunt集成自动启动
  2. Munin监控的安装与配置
  3. NYOJ -37回文字符串
  4. poj2027简单题
  5. ASP.NET MVC 5 学习教程:添加控制器
  6. js原型学习
  7. 在SpringBoot中存放session到Redis
  8. React 虚拟 DOM 的差异检测机制
  9. c语言利用读取命令行(多行读取)
  10. 【转】使用程序修改系统(IE)代理设置
  11. 开发认为不是bug,你该如何处理?
  12. 关于JAVA路径 问题
  13. C# if为false仍然进入方法体,==和qeual结果不一致
  14. mysq 数据库基本管理
  15. linux下oracle数据库字符集修改
  16. 阿里云 CentOS7安装redis4.0.9并开启远程访问
  17. 通过Places API Web Service获取兴趣点数据
  18. C++标准库简介
  19. Mac上修改MySQL默认字符集为utf8
  20. Jenkis 无法下载插件问题解决

热门文章

  1. Jmeter之JSON Path Extractor的使用(JSON-handle下载安装和使用)
  2. JAVA生成验证码代码
  3. IDEA中安装go插件,如何能够配置go SDK?
  4. Unity 更改鼠标指针
  5. 维护solr索引库
  6. 题解 P3369 【【模板】普通平衡树(Treap/SBT)】
  7. 最简单的一个win32程序
  8. js同步和异步
  9. 查看PHP指定扩展的版本信息
  10. 使用ABAP批量下载Markdown源文件里的图片到本地