s6tu
# -*- coding: utf-8 -*-
# @Time : 2018/03/30 15:20
# @Author : cxa
# @File : liuuchnagtu.py
# @Software: PyCharm
import requests
from fake_useragent import UserAgent as UA
from lxml import html
import os
import threading
import traceback
import time
import random
class GetImage():
def __init__(self):
self.url="http://www.s6tu.com/explore/popular/?list=images&sort=likes_desc&page={}"
self.imgpath = "//div[@class='list-item-image fixed-size']/a/img/@src"
self.headers = {
'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
'Accept - Encoding': 'gzip, deflate',
'Accept-Language': 'zh-Hans-CN, zh-Hans; q=0.5',
'Connection': 'Keep-Alive',
'User-Agent': UA().random,
'Host': 'www.s6tu.com',}
def get_oen_page(self):
try:
os.makedirs("setu",exist_ok=True)
for i in range(1,999):
url=self.url.format(i)
Session=requests.session()
#Session.proxies.update(self.proxies)
req=Session.get(url,headers=self.headers)
if req.status_code==requests.codes.ok:
root=html.fromstring(req.text)
imglist=root.xpath(self.imgpath)
newlist=[i.replace(".md.",".")for i in imglist]
downloadThreads=[]
for i in range(0,len(newlist),int(len(newlist)/3)):
downloadThread = threading.Thread(target=self.getimglist, args=(newlist,i, i + int(len(newlist)/3)))
downloadThreads.append(downloadThread)
downloadThread.start()
for item in downloadThreads:
item.join()
print("get one page over") else:
print("errro")
time.sleep(random.randint(1,5))
except:
print("error,here is details:{}".format(traceback.format_exc()))
def getimglist(self,newlist,start,end):
if end>len(newlist):
end=len(newlist)
for i in range(start,end):
imgurl=newlist[i]
downloadThreads = []
print(imgurl)
req=requests.get(imgurl,headers=self.headers)
with open(os.path.join("setu",os.path.basename(imgurl)),"wb") as fs:
fs.write(req.content) if __name__=="__main__":
GetImage().get_oen_page()
s6tu的更多相关文章
- 15. Go 语言“避坑”与技巧
Go 语言"避坑"与技巧 任何编程语言都不是完美的,Go 语言也是如此.Go 语言的某些特性在使用时如果不注意,也会造成一些错误,我们习惯上将这些造成错误的设计称为"坑& ...
随机推荐
- 16/7/8_PHP-正则表达式
什么叫正则表达式 PCRE库函数中,正则匹配模式使用分隔符与元字符组成,分隔符可以是非数字.非反斜线.非空格的任意字符.经常使用的分隔符是正斜线(/).hash符号(#) 以及取反符号(~),例如: ...
- Http Handler 介绍
引言 在 Part.1 Http请求处理流程 一文中,我们了解了Http请求的处理过程以及其它一些运作原理.我们知道Http管道中有两个可用接口,一个是IHttpHandler,一个是IHttpMod ...
- NornJ-javascript模版引擎
NornJ-javascript模版引擎 NornJ是一个渲染效率高,语法可读性好,可扩展性超强,适用场景丰富的javascript模板引擎. 学习网址:https://www.npmjs.com/p ...
- C#后台保存Cookie
一般是: Response.Cookies["backurl"].Expires.AddDays(2); 但是,IE浏览器保存Cookie用 Response.Cookies[&q ...
- e.target与e.currentTarget的区别,事件冒泡与事件捕获 ,事件委托
e.target与e.currentTarget的区别:https://www.jianshu.com/p/1dd668ccc97a 事件冒泡与事件捕获 :https://www.jianshu.co ...
- SCUT - 142 - 第n个素数
https://scut.online/p/142 但是洲阁筛打表还是超时了,打的表不够长吧,在51nod上面要跑5s.要是快10倍得要密1000倍,根本打不出来(时间意义). 暴力check要找的质 ...
- Educational Codeforces Round 60 (Rated for Div. 2) D. Magic Gems(矩阵快速幂)
题目传送门 题意: 一个魔法水晶可以分裂成m个水晶,求放满n个水晶的方案数(mol1e9+7) 思路: 线性dp,dp[i]=dp[i]+dp[i-m]; 由于n到1e18,所以要用到矩阵快速幂优化 ...
- python sys模块导入和模块的使用
sys故名思意,就是系统模块,系统模块内置很多方法,怎么样去调用方法呢 1,argv 参数 sys.argv() 2,exit() 退出程序 sys.exit() 3,version 获取版本信息 ...
- C# ASP.NET 手写板并生成图片保存
前端: @{ Layout = null; } <!DOCTYPE html> <html lang="zh-CN"> <head> <t ...
- ubuntu16.04安装mysql数据库
安装 sudo apt-get install mysql-server(安装过程中按提示设置root密码) sudo apt-get install mysql-client sudo apt-ge ...