就是个python爬虫

就像爬个图看看
源网站链接:http://www.setuw.com
使用python编写,使用了threadpool 等库,自行下载。
环境:python 3 , win10 , 树莓派环境下测试通过

网站元素结构


代码

# -*- coding: utf-8 -*
from concurrent.futures import ThreadPoolExecutor
import urllib.request
import _thread
import json
import threadpool
from time import sleep
from bs4 import BeautifulSoup
import os
import randommaxThreadCount = 8available_thread = 8baseDomain="http://www.setuw.com"
intrance = "http://www.setuw.com/tag/rosi/"#网站分类对应的目录
tags = [ "/tag/rosi/", "/tag/tuigirl/" , "/tag/ugirls/" ,
"/tag/xiuren/" , "/tag/disi/" , "/tag/dongman/" , "/tag/xinggan/" ,
"/tag/qingchun/" , "/tag/youhuo/" , "/tag/mote/" , "/tag/chemo/" ,
"/tag/tiyu/" , "/tag/zuqiubaobei/" , "/meinv/liuyan/"
]types = ["ROSI" , "推女郎" , " 尤果" , "  秀人 " ,
" DISI " , "动漫 " , "性感 " , "清纯 " , " 诱惑 " , " 模特 " , " 车模" , "体育" , " 足球" , " 柳岩" ]typeSize = len(types)
path =  ""
header = {"User-Agent":'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36','Accept': '*/*','Accept-Language': 'en-US,en;q=0.8','Cache-Control': 'max-age=0','Connection': 'keep-alive'
}def Download(argv1):url = argv1.split("#")[0]title = argv1.split("#")[1]name = argv1.split("#")[2]#print("URl is " , url, " , title is " , title , " , name is "  , name)print("Download processing:" , argv1.split("#")[3])apath = path+"/" + title  + "/"#print(apath)if not os.path.exists(apath): #判断系统是否存在该路径,不存在则创建os.makedirs(apath)urllib.request.urlretrieve( url, '{0}{1}.jpg'.format(apath, name)) # ,下载图片保存在本地returndef run(targetUrl,title):global available_threadprint("downloading " + title)req = urllib.request.Request(url=targetUrl,headers=header)response = urllib.request.urlopen(req)#1111111这里的req可看成一种更为高级的URLhtml = response.read().decode('utf-8','ignore')soup = BeautifulSoup(html, 'html.parser')imgs = soup.find_all('img') size = len(imgs)resules = 1with ThreadPoolExecutor(maxThreadCount) as pool:for i in range(2,size-16):#已经证实过,页面中抓取的img,2到size-6为图集图片data =  imgs[i]["datas"]all = data.split("'")'''参数列表:下载链接,图集名,图片名,图集下载进度'''argv ={ all[len(all) - 2] + "#" + title  + "#" + all[len(all) - 2].split(".")[1]+str(i) + "#" + str(i-1) + "/" + str(size-18) }results = pool.map(Download,(argv)) #使用map添加线程进线程池print(title  , " download successfull;")returnif __name__ == '__main__':'''自定义下载路径。若输入.,则下载至当前目录,跳过则下载到/home/hdd/picDl/(这是我)自己的硬盘挂载点。。。可自定义)'''input1 = input("input a folder(. as ./ , none as /home/hdd/picDl/):")if input1==".":path = "./"elif input1=="":path = "/home/hdd/picDl/"else:path = input1print("Path seted to " + path)#选择一个下载类别。在网站最上方有,我是手动找出来的,有时效性for i in range(0,len(types)-1):print("| " + str(i)+ " | " + types[i] + " | ")print("select a type to download , ")index = input(" or input nothing to download index page:")if index == "":intrance = intranceelse:index1 = int(index)if index1 < len(types)-1 and index1 > 0 :intrance = baseDomain + tags[index1]else:print("something wrong , setting download tartget as default")intrance = intranceprint( intrance +  " is going to download.")'''自定义下载线程数。注意,函数中每个线程用于下载一张图片,所以只能说是多个图片并行下载。'''maxThreadCount_ = input("input a number if you want to modify default thread number:")if maxThreadCount_ == "" :print("using default number:" , maxThreadCount)else :print("Modified number to:" , maxThreadCount_)maxThreadCount = int(maxThreadCount_)req = urllib.request.Request(url=intrance,headers=header)response = urllib.request.urlopen(req)html = response.read().decode('utf-8','ignore')#解码 得到这个网页的html源代码soup = BeautifulSoup(html, 'html.parser')Divs = soup.find_all('a',attrs={'class':'a1' }) for div in Divs:if div["href"] is None:print("没有图集了")
#            returnelif div['href'] is None or div['href']=="": #有链接,但是是 空链接print("图集没有连接")
#            returnelse:targetUrl= baseDomain + div['href']title=div["title"]print("正在下载套图:" + title)run(targetUrl,title)

缺点(改进方向):

  1. 目前只下载分类第一页的图集
  2. 不能保存下载进度。
  3. 没了吧。。欢迎批评指正

Python爬虫一则相关推荐

  1. 关于Python爬虫原理和数据抓取1.1

    为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...

  2. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  3. python爬虫抓取信息_python爬虫爬取网上药品信息并且存入数据库

    我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会 ...

  4. python爬虫案例_推荐上百个github上Python爬虫案例

    现在学生都对爬虫感兴趣,这里发现一些好的github开源的代码,分享给各位 1.awesome-spider 该网站提供了近上百个爬虫案例代码,这是ID为facert的一个知乎工程师开源的,star6 ...

  5. Python培训分享:python爬虫可以用来做什么?

    爬虫又被称为网络蜘蛛,它可以抓取我们页面的一些相关数据,近几年Python技术的到来,让我们对爬虫有了一个新的认知,那就是Python爬虫,下面我们就来看看python爬虫可以用来做什么? Pytho ...

  6. 玩转 Python 爬虫,需要先知道这些

    作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 爬虫基本原理 1. URI 和 URL URI 的全称为 Uniform Resource Identifier,即统一资源标志 ...

  7. 买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划

    作者 | 菜园子哇 编辑 | 唐小引 来源 | CSDN 博客 马上上班了,回来的路上,上班地铁上都是非常急需口罩的. 目前也非常难买到正品.发货快的口罩,许多药店都售完了. 并且,淘宝上一些新店口罩 ...

  8. 一个月入门Python爬虫,轻松爬取大规模数据

    如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样一个月入门Python爬虫,轻松爬的编程语言提供越来越多的优秀工具,让爬虫 ...

  9. Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!

    Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...

  10. Python爬虫破解有道翻译

    有道翻译是以异步方式实现数据加载的,要实现对此类网站的数据抓取,其过程相对繁琐,本节我以有道翻译为例进行详细讲解. 通过控制台抓包,我们得知了 POST 请求的参数以及相应的参数值,如下所示: 图1: ...

最新文章

  1. wince5使用access数据库_关于wince系统支持什么数据库的阿里云论坛用户知识和技术交流...
  2. 【Javascript】 == 、=== 区别
  3. SAP Cloud for Customer Price-计价简介 1
  4. 构造器是什么?(Java篇)
  5. [JS-DOM]DOM概述
  6. UVA - 400:Unix ls
  7. HEVC/H265 namespace 介绍
  8. 手机h5可以用ifreme_折叠照片特效,用手机修图软件就可以实现
  9. php 微信分享链接怎么弄,PHP实现 微信--分享朋友链接
  10. ❤️六万字《Spring框架从入门到精通》(建议收藏)❤️
  11. Storm目录树、任务提交、消息容错、通信机制
  12. 十大OpenGL教程
  13. Vue自学之路8-vue模版语法(事件绑定)
  14. ubuntu 上交叉编译 linaro 的库
  15. 计算机不断自动重启,电脑不断自动重启怎么办_解决电脑不断自动重启的方法...
  16. 逻辑回归(神经网络Sigmod激活函数,计量logit模型)
  17. 交易心得(简要总结)
  18. SIM7600使用TCP连接服务器
  19. 微软官方的 Power Apps 介绍和视频 来自于youtub 网站
  20. 关于能连上网却打不开网页的问题

热门文章

  1. mac系统按Esc键无法切换vim编辑模式
  2. 八叉树建立地图并实现路径规划导航
  3. dw自动滚动图片_DW里怎么做图片自动播放
  4. CSS 背景(background)+背景透明(CSS3)
  5. 转载 禁止ie浏览器打开
  6. 做一个专属于自己的图灵机器人
  7. 提交BlackBerry App World时候填写的SKU是什么?
  8. 小米电视不能访问电脑共享文件的解决方案
  9. WindowsXP支持最多64G内存的工具震撼登场
  10. [R语言基础]——数据处理实例