Python爬虫一则
就是个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)
缺点(改进方向):
- 目前只下载分类第一页的图集
- 不能保存下载进度。
- 没了吧。。欢迎批评指正
Python爬虫一则相关推荐
- 关于Python爬虫原理和数据抓取1.1
为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...
- python爬虫之Scrapy框架的post请求和核心组件的工作 流程
python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...
- python爬虫抓取信息_python爬虫爬取网上药品信息并且存入数据库
我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会 ...
- python爬虫案例_推荐上百个github上Python爬虫案例
现在学生都对爬虫感兴趣,这里发现一些好的github开源的代码,分享给各位 1.awesome-spider 该网站提供了近上百个爬虫案例代码,这是ID为facert的一个知乎工程师开源的,star6 ...
- Python培训分享:python爬虫可以用来做什么?
爬虫又被称为网络蜘蛛,它可以抓取我们页面的一些相关数据,近几年Python技术的到来,让我们对爬虫有了一个新的认知,那就是Python爬虫,下面我们就来看看python爬虫可以用来做什么? Pytho ...
- 玩转 Python 爬虫,需要先知道这些
作者 | 叶庭云 来源 | 修炼Python 头图 | 下载于视觉中国 爬虫基本原理 1. URI 和 URL URI 的全称为 Uniform Resource Identifier,即统一资源标志 ...
- 买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划
作者 | 菜园子哇 编辑 | 唐小引 来源 | CSDN 博客 马上上班了,回来的路上,上班地铁上都是非常急需口罩的. 目前也非常难买到正品.发货快的口罩,许多药店都售完了. 并且,淘宝上一些新店口罩 ...
- 一个月入门Python爬虫,轻松爬取大规模数据
如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这样一个月入门Python爬虫,轻松爬的编程语言提供越来越多的优秀工具,让爬虫 ...
- Python爬虫获取文章的标题及你的博客的阅读量,评论量。所有数据写入本地记事本。最后输出你的总阅读量!
Python爬虫获取文章的标题及你的博客的阅读量,评论量.所有数据写入本地记事本.最后输出你的总阅读量!还可以进行筛选输出!比如阅读量大于1000,之类的! 完整代码在最后.依据阅读数量进行降序输出! ...
- Python爬虫破解有道翻译
有道翻译是以异步方式实现数据加载的,要实现对此类网站的数据抓取,其过程相对繁琐,本节我以有道翻译为例进行详细讲解. 通过控制台抓包,我们得知了 POST 请求的参数以及相应的参数值,如下所示: 图1: ...
最新文章
- wince5使用access数据库_关于wince系统支持什么数据库的阿里云论坛用户知识和技术交流...
- 【Javascript】 == 、=== 区别
- SAP Cloud for Customer Price-计价简介 1
- 构造器是什么?(Java篇)
- [JS-DOM]DOM概述
- UVA - 400:Unix ls
- HEVC/H265 namespace 介绍
- 手机h5可以用ifreme_折叠照片特效,用手机修图软件就可以实现
- php 微信分享链接怎么弄,PHP实现 微信--分享朋友链接
- ❤️六万字《Spring框架从入门到精通》(建议收藏)❤️
- Storm目录树、任务提交、消息容错、通信机制
- 十大OpenGL教程
- Vue自学之路8-vue模版语法(事件绑定)
- ubuntu 上交叉编译 linaro 的库
- 计算机不断自动重启,电脑不断自动重启怎么办_解决电脑不断自动重启的方法...
- 逻辑回归(神经网络Sigmod激活函数,计量logit模型)
- 交易心得(简要总结)
- SIM7600使用TCP连接服务器
- 微软官方的 Power Apps 介绍和视频 来自于youtub 网站
- 关于能连上网却打不开网页的问题