千图网_性感美女图片爬取--图片懒加载

#爬取千图网性感美女模块的图片
#第一页:http://sc.chinaz.com/tupian/xingganmeinvtupian.html
#第二页:http://sc.chinaz.com/tupian/xingganmeinvtupian_2.html
#两种url结构不同,注意  可以使用if语句判断
import urllib.request
import urllib.parse
from lxml import etree
import time
import os

#定义下载图片的函数
def down_load_image(image_src):
    dirpath = "xinggan"
    #创建一个文件夹
    if not os.path.exists(dirpath):
        os.mkdir(dirpath)
    #搞个文件名
    filename = os.path.basename((image_src))
    #搞图片路径
    filepath =  os.path.join(dirpath,filename)
    #发送请求,保存图片
    #构造请求
    headers = {
    "User-Agent": ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘
}
    #合成请求
    request = urllib.request.Request(url=image_src,headers=headers)
    #获取响应
    response = urllib.request.urlopen(request)

    with open(filepath,"wb") as fp:
        fp.write(response.read())

#定义解析回传函数,并且下载蹄片
def parse_content(content):
    tree = etree.HTML(content)
    image_list = tree.xpath(‘//div[@id="container"]/div/div/a/img/@src2‘)
    #src搜不到 变为src2能搜到 是因为懒加载问题
    # print(image_list)
    # print(len(image_list))
    # exit()
    #遍历列表 依次下载图片
    for image_src in image_list:
        down_load_image(image_src)

#定义构造请求的函数
def handle_request(url,page):
    #区别第一页和以后页的格式
    if page == 1:
        url = "http://sc.chinaz.com/tupian/xingganmeinvtupian.html"
    else:
        url = url % page
    #print(url)
    #构造请求
    headers = {
    "User-Agent": ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36‘
}
    #合成请求
    request = urllib.request.Request(url=url,headers=headers)
    return request

#主函数
def main():
    url = "http://sc.chinaz.com/tupian/xingganmeinvtupian_%s.html"
    start_page = int(input("请输入开始爬取的页码:"))
    end_page = int(input("请输入爬取结束的页码:"))
    for page in range(start_page,end_page+1):
        #生成请求对象
        request = handle_request(url,page)
        #发送请求
        content = urllib.request.urlopen(request).read().decode()
        #解析回传数据
        parse_content(content)
        time.sleep(2)

if __name__==‘__main__‘:
    main()
    print("图片爬取结束...")

如果学这个不用来做点有意思的事情,那将毫无意义!

原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12183119.html

时间: 2024-07-29 11:28:08

千图网_性感美女图片爬取--图片懒加载的相关文章

使用jquery插件实现图片延迟加载技术(懒加载)

有时我们看到一些大型网站,页面如果有很多图片的时候,当你滚动到相应的行时,当前行的图片才即时加载的,这样子的话页面在打开只加可视区域的图片,而其它隐藏的图片则不加载,一定程序上加快了页面加载的速度,对于比较长的页面来说,这个方案是比较好的. 这里推荐使用jquery图片延迟加载插件jquery.lazyload实现图片延迟加载提高网站打开速度 下载地址:http://www.appelsiini.net/download/jquery.lazyload.js 修正版:jquery.lazyloa

Python网络爬虫_爬取Ajax动态加载和翻页时url不变的网页

1 . 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新. 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面. 几个常见的用到ajax的场景. 比如你在逛知乎,你没有刷新过网页,但是你却能看到你关注的用户或者话题有了新动态的消息提示. 还比如,我们在看视频时,可以看到下面

python+selenium+PhantomJS爬取网页动态加载内容

一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览器PhantomJS来抓取javascript渲染的页面,下面实现一个简单的爬取 环境搭建 准备工具:python3.5,selenium,phantomjs 我的电脑里面已经装好了python3.5 安装Selenium pip3 install selenium 安装Phantomjs 按照系统

爬取Ajax动态加载网页

常见的反爬机制及处理方式 1.Headers反爬虫 :Cookie.Referer.User-Agent 解决方案: 通过F12获取headers,传给requests.get()方法 2.IP限制 :网站根据IP地址访问频率进行反爬,短时间内进制IP访问 解决方案: 1.构造自己IP代理池,每次访问随机选择代理,经常更新代理池 2.购买开放代理或私密代理IP 3.降低爬取的速度 3.User-Agent限制 :类似于IP限制 解决方案: 构造自己的User-Agent池,每次访问随机选择 5.

Python爬虫学习——使用selenium和phantomjs爬取js动态加载的网页

1.安装selenium pip install selenium Collecting selenium Downloading selenium-3.4.1-py2.py3-none-any.whl (931kB) 100% |████████████████████████████████| 942kB 573kB/s Installing collected packages: selenium Successfully installed selenium-3.4.1 2.安装phan

图片懒加载库echo.js源码学习

最近不是在学习设计模式吗,然后就看到了代理模式加载图片的样例,然后自己实现了一下,就发现,自己写的这货每次就只能加载一张图片,而且图片要放在哪也是个很严重的问题 然后就去了 gayhub 找了找了找流行的图片懒加载库,这一找,就找到了一个echo.j是,打开一看,源码只有100多行吧,震惊..,看完源码,哎,木有上代理模式呀 仔细学习了下源码:觉得这种做法比较适合图片位置确定场景的吧,比如文章啊,一篇文章老长了,里面有蛮多图片散落在不同的地方,这样就比较合适,有可能有很多图片读者都不会翻到哪里,

懒加载图片

图片懒加载 定义 图片延迟加载也称为懒加载,延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页.可以减少请求数或者延迟请求数,优化性能. 呈现形式 [1]延时加载,使用setTimeout或setInterval进行加载延迟,如果用户在加载前就离开,自然就不会进行加载.[2]条件加载,符合某些条件或者触发了某些条件才开始异步加载.[3]可视区域加载,仅仅加载用户可以看到的区域,这个主要监控滚动条来实现,一般距离用户看到的底边很近的时候开始加载,这样能保证用户下拉时图片正好接上,

(可视区域加载)图片懒加载实现原理

参考文章:http://www.cnblogs.com/xiaohuochai/p/4859485.html http://www.cnblogs.com/xiaohuochai/p/4859899.html http://www.cnblogs.com/vajoy/p/4263291.html 定义 图片延迟加载也称为懒加载,延迟加载图片或符合某些条件时才加载某些图片,通常用于图片比较多的网页.可以减少请求数或者延迟请求数,优化性能. 呈现形式 [1]延时加载,使用setTimeout或set

图片懒加载和预加载

懒加载实际上就是通过计算图片的到可视区窗口的距离,如果图片的顶部到可视区窗口的底部的距离小于等于0的话,就生成一个image并设置image.src的属性值,放置到相应的图片位置 从而实现懒加载,即动态的创建image和添加image元素到页面. 预加载:要实现已进入页面就将图片下载,直接在script中创建imgae数组,循环的将图片的地址信息传递给各个image元素的src特性即可 懒加载实现: <!DOCTYPE html> <html lang="en">