python3 27270网站美女爬虫(二)
对于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网站美女爬虫(二)相关推荐
- python3 学习(2):在网站地图爬虫时的cannot use a string pattern on a bytes-like object 问题的解决方法...
python3.6.5 + pycharm 注意: 一.python3里的 urllib2 已经没有了,改为了 urllbi.request,因此,直接导入 import urllib.reques ...
- python3学习(5):在网站地图爬虫时的cannot use a string pattern on a bytes-like object 问题的解决方法
一.python3里的 urllib2 已经没有了,改为了 urllbi.request,因此,直接导入 import urllib.request 即可. 二.必须对正则表达式里的引用变量进行格式变 ...
- 爬虫爬取二次元网站美女图片
爬虫爬取二次元网站美女图片 前言 xpath解析 需求分析 代码编写 总代码 前言 本次需要爬取二次元网站cos板块下的图片 需要用到request模块与lxml模块,所以请提前安装好这两个模块,打开 ...
- 爬虫获取网站美女图片
爬虫获取网站美女图片 import requests from lxml import html import os if __name__=="__main__":etree = ...
- python3异步协程爬虫_Python实现基于协程的异步爬虫
Python实现基于协程的异步爬虫 一.课程介绍 1. 课程来源 本课程核心部分来自<500 lines or less>项目,作者是来自 MongoDB 的工程师 A. Jesse Ji ...
- Python3 实现淘女郎照片爬虫
项目简介:本实验通过使用 Python 实现一个淘宝女郎图片收集爬虫,学习并实践 BeautifulSoup.Selenium Webdriver 及正则表达式等知识. 本教程由阿treee发布在实验 ...
- [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式
往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 一.爬虫的定义.分类和流程 爬虫定义 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求 ...
- python3爬虫实例-python3.7简单的爬虫实例详解
python3.7简单的爬虫,具体代码如下所示: #https://www.runoob.com/w3cnote/python-spider-intro.html #Python 爬虫介绍 impor ...
- python爬虫实例-python3.7简单的爬虫实例详解
python3.7简单的爬虫,具体代码如下所示: #https://www.runoob.com/w3cnote/python-spider-intro.html #Python 爬虫介绍 impor ...
最新文章
- 【Qt】ubuntu14.04.5 qt5.6中使用opencv3.4报错:Using GTK+ 2.x and GTK+ 3 in the same process is not supported
- UE如何使用正则表达式
- __CLASS__ get_class() get_called_class()区别
- 选课系统html页面设计,网上选课系统的设计与实现(代码)..doc
- Blender文档翻译:Operators tutorial(操作教程)
- Hadoop学习笔记—2.不怕故障的海量存储:HDFS基础入门
- 在Kubernetes上部署Hyperledger Fabric
- 全球约30%的智能手机受高通新漏洞影响,打补丁状况不明
- shell监控磁盘使用情况
- ubuntu 14.04 install teamviewer
- 联想服务器怎么备份系统软件,联想笔记本通过命令进行系统备份的教程
- 《《《翻译》》》avod 三维生成与目标检测
- matlab 设计 希尔伯特变换器,基于Matlab的FIR型希尔伯特变换器设计
- 【Linux】【操作】Linux操作集锦系列之一——定时任务
- 个子矮s弯如何看点打方向图解_科目二s弯怎么看点打方向技巧图解
- 共享充电宝广告机功能与特点
- c4d如何把文字贴在物体表面_如何使用C4D制作动态滚动文字条
- 论文阅读——Multi-Task Learning Framework for Extracting Emoton Cause Span and Entailment in Conversations
- IDEA安装TFS插件
- Android 查看wifi密码
热门文章
- 《浪潮之巅》读书笔记系列:IBM 蓝色巨人
- 关于腾讯系产品连不上网的一个建议
- CSDN博客怎样加入量子恒道统计?
- 手机为何连不上WIFI,到底是谁的问题?
- “温酒吧”不得不说的故事 (转)
- 抖音里盘他是什么意思和梗?
- 一体化HR SaaS+低代码平台加速企业数字化转型进程
- jq4 实例(磁力图片、轮播图、腾讯课堂菜单、可弹出红色菜单、砸蛋游戏)...
- linux 怎么退出pr命令,Linux pr 命令 command not found pr 命令详解 pr 命令未找到 pr 命令安装 - CommandNotFound ⚡️ 坑否...
- 磷光铱配合物PMMA薄膜|金属配合物单晶及过渡金属配合物固载-齐岳试剂