搜索
bottom↓
回复: 18

python 爬取网站上的图片,抛个砖,分享下代码

[复制链接]

出0入8汤圆

发表于 2018-11-17 19:11:23 | 显示全部楼层 |阅读模式
刚学两天,根据网上教程敲的。代码如下:

import urllib.request
import urllib.parse
import os
#要先进行安装, pip install lxml
from lxml import etree
import time

def handle_request1(url,page):
    print("jaaj")
#构建请求对象
def handle_request(url, page):
    #由于第一页和后面的页码规律不一样,要判断
    if page == 1:
        url = url.format('')
    else:
        url = url.format('_'+str(page))
    print(url)
    headers={
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0;'
                      ' Windows NT 6.1; WOW64; Trident/4.0; '
                      'SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729;'
                      ' .NET CLR 3.0.30729; Media Center PC 6.0)'
    }
    request = urllib.request.Request(url=url, headers=headers)
    return request

#解析内容并且下载图片
def parse_content(content):
    tree = etree.HTML(content)
    #最后一项为src就不行,懒加载? what
    image_list = tree.xpath('//div[@id="container"]/div/div/a/img/@src2')
    print("image_list:",image_list)
    print('iamge_list len is :',len(image_list))
    #遍历列表一次下载
    for image_src in image_list:
        download_image(image_src)

def download_image(image_src):
    dirpath= 'xinggan'
    #创建文件夹
    if not os.path.exists(dirpath):
        os.mkdir(dirpath)
    #文件mimg
    filename =os.path.basename(image_src)
    print("文件名:",filename)
    #文件路径
    filepath = os.path.join(dirpath,filename)
    print("文件路径:",filepath)
    #发送请求,保存图片
    headers = {
        'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0;'
                      ' Windows NT 6.1; WOW64; Trident/4.0; '
                      'SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729;'
                      ' .NET CLR 3.0.30729; Media Center PC 6.0)'
    }
    print('image_src:', image_src)
    request = urllib.request.Request(url=image_src, headers=headers)
    response = urllib.request.urlopen(request)
    with open(filepath, 'wb') as fp:
        fp.write( response.read())
        print("下载成功")
def main():
    url = 'http://sc.chinaz.com/tupian/' \
          'xingganmeinvtupian{}.html'
    start_page = int(input('请输入起始图片页码:'))
    end_page = int(input('请输入结束图片页码:'))
    #start_page=1
    #end_page=10
    for page in range(start_page,end_page+1):
        request = handle_request(url,page)
        content=urllib.request.urlopen(request).read().decode()
        parse_content(content)
        print("第几页:",page)
        time.sleep(2)

if __name__ == '__main__':
    main()

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入25汤圆

发表于 2018-11-17 19:56:19 来自手机 | 显示全部楼层
py2 还是py3

出0入8汤圆

 楼主| 发表于 2018-11-17 20:44:42 | 显示全部楼层
3…………

出0入0汤圆

发表于 2018-11-17 21:20:25 | 显示全部楼层
不明觉厉,顶一个。有朋友在学,分享过去~

出0入0汤圆

发表于 2018-11-17 21:27:31 | 显示全部楼层
厉害,有空试试。

出0入0汤圆

发表于 2018-11-17 21:37:30 来自手机 | 显示全部楼层
感谢楼主分享

出0入42汤圆

发表于 2018-11-18 14:36:02 来自手机 | 显示全部楼层
感谢分享,下载学习一下

出0入0汤圆

发表于 2018-11-18 14:59:11 来自手机 | 显示全部楼层
感谢分享,

出0入0汤圆

发表于 2019-1-1 00:02:03 | 显示全部楼层
会被封IP么

出0入8汤圆

 楼主| 发表于 2019-1-2 16:39:50 | 显示全部楼层

搞慢点   一般不会

出0入0汤圆

发表于 2019-1-2 17:26:19 | 显示全部楼层

看下print不就知道了吗

出0入0汤圆

发表于 2019-1-3 01:08:21 | 显示全部楼层
用requests会不会方便一点?urllib还得自己来

出0入0汤圆

发表于 2019-1-3 11:16:36 | 显示全部楼层
好,收藏试一试.

出0入8汤圆

 楼主| 发表于 2019-1-3 18:12:03 | 显示全部楼层
wistarky 发表于 2019-1-3 01:08
用requests会不会方便一点?urllib还得自己来

request那个时候还不会

出0入4汤圆

发表于 2019-8-12 13:37:29 | 显示全部楼层
不错,感谢分享

出0入0汤圆

发表于 2019-8-15 10:26:03 | 显示全部楼层
谢谢分享,试了下可以用,换个网站就不行

出0入8汤圆

 楼主| 发表于 2019-8-15 10:45:16 | 显示全部楼层
lyl2022 发表于 2019-8-15 10:26
谢谢分享,试了下可以用,换个网站就不行

这东西要先分析网站架构,根据源码特点做爬取的,并不是通用的。

出0入0汤圆

发表于 2019-8-15 10:53:55 | 显示全部楼层
justdomyself 发表于 2019-8-15 10:45
这东西要先分析网站架构,根据源码特点做爬取的,并不是通用的。

谢谢回复,大概知道一点,正在学习

出0入0汤圆

发表于 2019-8-15 13:45:41 来自手机 | 显示全部楼层
lyl2022 发表于 2019-8-15 10:26
谢谢分享,试了下可以用,换个网站就不行

有些网站有反爬虫  攻防双方互相升级
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 06:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表