对于27270网站美女 进行了一个尝试
使用

python3
库:
urllib
BeautifulSoup
lxml 

主要是下载静态网页的图片

显示从IP代理网站上获取代理池,然后在从静态页面获取图片的连接,最后下载图片

1、爬虫下载IP代理
2、模拟浏览器下载

分析页面

<body>
....省略其他页面代码
<div>
....省略其他页面代码<div class="MeinvTuPianBox"><ul>
....省略其他页面代码<li> <a href="*****" title="******" class="MMPic" target="_blank"><i><img src="*****" width="190" height="280" alt="*****"  /></i></a>
....省略其他页面代码
</li>
....省略其他页面代码
</div>

从上面可以看出页面各个元素之间的关系,确定好要找元素的位置

body > div > div class=MeinvTuPianBox > ul > li > a class=MMPic > i > img

完整的代码

from urllib.request import urlopen
import urllib.request
from bs4 import  BeautifulSoup
import os, time
import http.cookiejar
import  random
from urllib.request import urlretrieve ,HTTPError ,urlopen,URLError base_url='http://www.27270.com/'#ent/meinvtupian/' #list_11_%s.html';
one_url=['word']base_dir=''
proxy_ip=[]#class myThread (threading.Thread):
#    def __init__(self, start,end):
#        threading.Thread.__init__(self)
#        #self.threadID = threadID
#        self.start = start
#        self.end = end
#
#    def run(self):
#        print ("开始线程:" + self.name)
#        #print_time(self.name, self.counter, 5)
#        get_url_list( self.start,self.end )
#        print ("退出线程:" + self.name)#ip代理池
def getProxyIp():  proxy = []  for i in range(1, 3):  #print(i)  header = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '  'AppleWebKit/537.36 (KHTML, like Gecko) '  'Ubuntu Chromium/44.0.2403.89 '  'Chrome/44.0.2403.89 '  'Safari/537.36'}  req = urllib.request.Request(url='http://www.xicidaili.com/nt/{0}'.format(i), headers=header)  r = urllib.request.urlopen(req)  soup = BeautifulSoup(r,'html.parser',from_encoding='utf-8')  table = soup.find('table', attrs={'id': 'ip_list'})  tr = table.find_all('tr')[1:]  #解析得到代理ip的地址,端口,和类型  for item in tr:  tds =  item.find_all('td')  temp_dict = {}  kind = "{0}:{1}".format(tds[1].get_text().lower(), tds[2].get_text())  proxy.append("http://"+kind)  return proxy  #随机获取IP地址
def getIP():ip=random.choice(proxy_ip)return ip  def makeMyOpener(head={'Connection': 'Keep-Alive','Accept': 'text/html, application/xhtml+xml, */*','Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3','User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
}):proxy_dict=getIP()print(proxy_dict)cj = http.cookiejar.CookieJar()opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))header = []for key, value in head.items():elem = (key, value)header.append(elem)elem=('http',proxy_dict)header.append(elem)opener.addheaders = headerreturn opener   #图片下载
def download(url,file_name,index):  dir=base_dir+str(index)+'/' if not os.path.isdir(dir):os.makedirs(dir)dir=dir+file_nametry:with  urlopen(url,timeout=30) as r:content=r.read();with open(dir,'wb') as code:#open(name,[mode[,buffering]]) 打开文件夹code.write(content)#time.sleep(1)except :passdef get_url_list(index,end):girl_list=[]try:#if end==index:#    print(u'已经全部抓取完毕')#    threading.currentThread().stop()   oper = makeMyOpener()url='http://www.27270.com/ent/meinvtupian/list_11_%s.html' % indexhtml = oper.open(url)#第一种方法#bsObj = BeautifulSoup(html,'lxml')#girl_list = bsObj.findAll('img')#第二种方法soup = BeautifulSoup(html,'lxml')girl_list = soup.select('body > div > div.MeinvTuPianBox > ul > li > a.MMPic > i > img')if not girl_list:print(u'已经全部抓取完毕')sys.exit(0)#第三寻找元素方法#response = requests.get(image_detail_link).content#sel = html.fromstring(html)            #girl_list =sel.xpath("//div[@class='MeinvTuPianBox']/ul/li/a[@class='MMPic']/i/img")[0]mm_down = []mm_names = []#第四种方法 正则,此处略for mpoto in girl_list:mm_link = mpoto.get('src') mm_nick = mpoto.get('alt')mm_down.append(mm_link)mm_names.append(mm_nick)for gril,name in zip(mm_down,mm_names):download(gril, name + '.jpg',index)         print(gril+name)index=index+1       get_url_list(index,end)except HTTPError as e:  print('HTTPError'+str(e.code))get_url_list(index,end) except URLError as e:print('URLError'+e)get_url_list(index,end)#return girl_list       if __name__ == '__main__':proxy_ip=getProxyIp()base_dir='E:/cache-work/python3/images1/'if not os.path.isdir(base_dir):os.makedirs(base_dir)get_url_list(163,100)"""try:_thread.start_new_thread( get_url_list, ( 1,35, ) )_thread.start_new_thread(get_url_list, ( 35,70, ) )_thread.start_new_thread( get_url_list, ( 70,110, ) )_thread.start_new_thread( get_url_list, ( 110,150, ) )_thread.start_new_thread( get_url_list, ( 150,500,) )except:print ("Error: 无法启动线程")while 1:pass"""
"""thread1= myThread( 1,35)thread2= myThread(35,70)thread3= myThread(70,110)thread4= myThread(110,150)thread5= myThread(150,1000)thread1.start()thread2.start()thread3.start()thread4.start()thread5.start()
""" # 创建两个线程

python3 27270网站美女爬虫(二)相关推荐

  1. python3 学习(2):在网站地图爬虫时的cannot use a string pattern on a bytes-like object 问题的解决方法...

    python3.6.5 +  pycharm 注意: 一.python3里的 urllib2 已经没有了,改为了 urllbi.request,因此,直接导入 import urllib.reques ...

  2. python3学习(5):在网站地图爬虫时的cannot use a string pattern on a bytes-like object 问题的解决方法

    一.python3里的 urllib2 已经没有了,改为了 urllbi.request,因此,直接导入 import urllib.request 即可. 二.必须对正则表达式里的引用变量进行格式变 ...

  3. 爬虫爬取二次元网站美女图片

    爬虫爬取二次元网站美女图片 前言 xpath解析 需求分析 代码编写 总代码 前言 本次需要爬取二次元网站cos板块下的图片 需要用到request模块与lxml模块,所以请提前安装好这两个模块,打开 ...

  4. 爬虫获取网站美女图片

    爬虫获取网站美女图片 import requests from lxml import html import os if __name__=="__main__":etree = ...

  5. python3异步协程爬虫_Python实现基于协程的异步爬虫

    Python实现基于协程的异步爬虫 一.课程介绍 1. 课程来源 本课程核心部分来自<500 lines or less>项目,作者是来自 MongoDB 的工程师 A. Jesse Ji ...

  6. Python3 实现淘女郎照片爬虫

    项目简介:本实验通过使用 Python 实现一个淘宝女郎图片收集爬虫,学习并实践 BeautifulSoup.Selenium Webdriver 及正则表达式等知识. 本教程由阿treee发布在实验 ...

  7. [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 一.爬虫的定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求 ...

  8. python3爬虫实例-python3.7简单的爬虫实例详解

    python3.7简单的爬虫,具体代码如下所示: #https://www.runoob.com/w3cnote/python-spider-intro.html #Python 爬虫介绍 impor ...

  9. python爬虫实例-python3.7简单的爬虫实例详解

    python3.7简单的爬虫,具体代码如下所示: #https://www.runoob.com/w3cnote/python-spider-intro.html #Python 爬虫介绍 impor ...

最新文章

  1. 【Qt】ubuntu14.04.5 qt5.6中使用opencv3.4报错:Using GTK+ 2.x and GTK+ 3 in the same process is not supported
  2. UE如何使用正则表达式
  3. __CLASS__ get_class() get_called_class()区别
  4. 选课系统html页面设计,网上选课系统的设计与实现(代码)..doc
  5. Blender文档翻译:Operators tutorial(操作教程)
  6. Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
  7. 在Kubernetes上部署Hyperledger Fabric
  8. 全球约30%的智能手机受高通新漏洞影响,打补丁状况不明
  9. shell监控磁盘使用情况
  10. ubuntu 14.04 install teamviewer
  11. 联想服务器怎么备份系统软件,联想笔记本通过命令进行系统备份的教程
  12. 《《《翻译》》》avod 三维生成与目标检测
  13. matlab 设计 希尔伯特变换器,基于Matlab的FIR型希尔伯特变换器设计
  14. 【Linux】【操作】Linux操作集锦系列之一——定时任务
  15. 个子矮s弯如何看点打方向图解_科目二s弯怎么看点打方向技巧图解
  16. 共享充电宝广告机功能与特点
  17. c4d如何把文字贴在物体表面_如何使用C4D制作动态滚动文字条
  18. 论文阅读——Multi-Task Learning Framework for Extracting Emoton Cause Span and Entailment in Conversations
  19. IDEA安装TFS插件
  20. Android 查看wifi密码

热门文章

  1. 《浪潮之巅》读书笔记系列:IBM 蓝色巨人
  2. 关于腾讯系产品连不上网的一个建议
  3. CSDN博客怎样加入量子恒道统计?
  4. 手机为何连不上WIFI,到底是谁的问题?
  5. “温酒吧”不得不说的故事 (转)
  6. 抖音里盘他是什么意思和梗?
  7. 一体化HR SaaS+低代码平台加速企业数字化转型进程
  8. jq4 实例(磁力图片、轮播图、腾讯课堂菜单、可弹出红色菜单、砸蛋游戏)...
  9. linux 怎么退出pr命令,Linux pr 命令 command not found pr 命令详解 pr 命令未找到 pr 命令安装 - CommandNotFound ⚡️ 坑否...
  10. 磷光铱配合物PMMA薄膜|金属配合物单晶及过渡金属配合物固载-齐岳试剂