爬虫基础练习-python批量下载图片之达盖尔的旗帜

news/2024/7/19 8:42:26 标签: 爬虫, python, 操作系统

三个重点,我隐藏了1024的地址,本爬虫只适用于1024的抓取。每个帖子以帖子名为文件名新建一个文件并把帖子内图片保存下来。

url_start设置起始页 url_end设置结束页
有问题的留言,我看到就会回复

1编码

2文章页链接匹配

3文件夹操作



import requests
import re
import time
from bs4 import BeautifulSoup
import os

url_start = 'url1'
url_end = 'url2'


# 获取图片链接并保存到文件夹的函数
def getIMG(article_url):
    # time.sleep(1)
    urls = []
    try:
        html = requests.get(article_url)
        html.encoding = 'gbk'
        soup = BeautifulSoup(html.text, 'html.parser')
        part_picURL = re.findall("src='http://img(.+?\.jpg)'",html.text,re.S)
        for each in part_picURL:
            picURL = 'http://img' + each
            urls.append(picURL)
        i=0
        for each in urls:
            try:
                pic = requests.get(each, timeout = 10)
                folder_name = soup.select('h4')[0].text
                if os.path.isdir(folder_name):
                    pass
                else:
                    os.mkdir(folder_name)
                    print('文件夹'+ '$ ' + folder_name + '$' + '创建完成')
                file_name = folder_name+'/' + folder_name + str(i) + '.jpg'
                fp = open(file_name,'wb')
                fp.write(pic.content)
                fp.close()
                i += 1
            except:
                pass
        print('图片下载完成')
    except:
        pass
    return urls


url_list = []
#获取当前页面文章列表链接并翻页
def getlist(url_Start):
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'}
    req = requests.get(url_Start)
    req.encoding = 'gbk'
    url_index = re.findall('"打開新窗口" href="htm_(.+?\.html)" target="_blank">',req.text,re.S)
    for p in url_index:
        full_url = 'http://cl.gtta.pw/htm_' + p
        url_list.append(full_url)
    #判断是否要翻页
    urls_next = re.findall('false;}"></a><a href="(.*?)">下一頁',req.text,re.S)[0]
    url_next = 'http://cl.gtta.pw/' + urls_next
    if url_next != url_end:
        getlist(url_next)
    else:
        print('已到达末页')
    return url_list


lists = getlist(url_start)
print(len(lists))
for list in lists:
    img = getIMG(list)
    print(img)






http://www.niftyadmin.cn/n/997204.html

相关文章

python字符串去重保持原顺序_python 对列表去重,并保持列表原来顺序

python 使用set对列表去重&#xff0c;并保持列表原来顺序# python 使用set对列表去重,并保持列表原来顺序 list1 [cc, bbbb, afa, sss, bbbb, cc, shafa] for item i ...Python列表去重的三种方法1. 列表去重 li [] for item in my_list: if item not in li: li.append(item…

python的各种推导式(列表推导式、字典推导式、集合推导式)

推导式comprehensions&#xff08;又称解析式&#xff09;&#xff0c;是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导&#xff0c;在Python2和3中都有支持&#xff1a; 列表(list)推导式字典(dict)推导式集合(set)推导式一…

Unicode转义(\uXXXX)的编码和解码

在涉及Web前端开发时, 有时会遇到\uXXXX格式表示的字符, 其中XXXX是16进制数字的字符串表示形式, 在js中这个叫Unicode转义字符, 和\n \r同属于转义字符. 在其他语言中也有类似的, 可能还有其它变形的格式. 多数时候遇到需要解码的情况多点, 所以会先介绍解码decode, 后介绍编码…

如何修改安卓界面上的图片和文字

安卓修改大师系列教程之《如何修改安卓应用中的网络下载的图片》。本视频通过专业的视角&#xff0c;来一步步介绍如何修改安卓界面上面的图片和文字&#xff0c;如果图片在安装包里面&#xff0c;相对修改比较容易&#xff0c;如果在网络上&#xff0c;需要通过抓包工具定位。…

用命令开启mysql远程连接_开启Mysql远程访问的所有方法

开启Mysql远程访问的所有方法》Mysql默认是不可以通过远程机器访问的,通过下面的配置可以开启远程访问.其实就是两个办法&#xff0c;最终都是为了修改 user 表中 root 对应的 host 字段为 %1. update user set host’%’ where user’root’;flush privileges;这种方法不用理会…

学一下负载均衡相关的东西

看这篇文章&#xff1a; http://blog.csdn.net/bingqingsuimeng/article/details/53694187 服务器负载均衡有三大基本Feature&#xff1a;负载均衡算法&#xff0c;健康检查和会话保持 会话保持&#xff0c;指的是cookie/session等信息&#xff0c;保证一次会话即使发送到其他服…

Thrift——栗子

这张经典的图&#xff1a;黄色部分是用户实现的业务逻辑&#xff0c;褐色部分是根据Thrift定义的服务接口描述文件&#xff08;IDL&#xff0c;接口定义语言&#xff09;生成的客户端和服务端代码框架&#xff0c;红色部分是根据Thrift文件生成代码实现数据的读写操作。红色部分…

如何修改安卓边栏菜单

本次视频教程重点通过从界面元素为线索&#xff0c;来找到相对应的布局文件&#xff0c;由表及里&#xff0c;进行分析讲解和修改。抛砖引玉&#xff0c;希望大家能够借此了解安卓界面元素修改的基本方法。 第三讲 如何修改安卓边栏菜单 由于不能上传视频&#xff0c;请移步这…