鱼C论坛

 找回密码
 立即注册
查看: 2334|回复: 6

[技术交流] 爬取图片(没有加密)

[复制链接]
发表于 2020-6-10 08:59:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Cool_Breeze 于 2020-6-12 14:20 编辑
#!/usr/bin/env python3
#coding=utf-8

from special_str_replace import special_str_replace
import urllib.request,urllib.error
from bs4 import BeautifulSoup as bfs
import threading
import os

def main():
    url = 'https://www.woyaogexing.com/touxiang/z/qlshouhui/'
    home = 'https://www.woyaogexing.com'
    html = gethtml(url)
    for page_nu in get_page_list(html):
        get_photo_url_list(gethtml(home + page_nu))

def gethtml(url):
    head = {
    'Accept-Language': 'zh-CN,zh;q=0.9',
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.30 Safari/537.36"
    }
    
    req = urllib.request.Request(url=url, headers=head)
    response = urllib.request.urlopen(req)
    html = bfs(response,'html.parser') #解析html
    # print(html)
    
    return html

def get_page_list(html):
    data = []
    subject = html.find('div', class_="pMain")
    
    for i in subject.find_all('a', class_="img"):
        data.append(i.attrs['href'])
    
    # print(data)
    return data
    
def get_photo_url_list(html):
    #<h1>....</h1>
    title = str(html.find('h1').string).replace(':','_')
    #替换字符串中的特殊字符为'_',为了创建文件夹
    title = special_str_replace(title)
    if not os.path.exists('./' + title):
        os.mkdir(title)
    os.chdir(title)
    #ul class="artCont cl"
    filterurl = html.find('ul', class_="artCont cl")
    ph_url = []
    for attr in filterurl.find_all('a'):
        # print(attr.attrs)
        ph_url.append(attr['href'])
        
    thread_photo(ph_url)
    os.chdir('../') #返回文件夹
def thread_photo(url):
    thread = []
    count = 0
    for i in url:
        count += 1
        thread.append(threading.Thread(target=get_ptoto, args=(i,count)))
    for i in thread:
        i.start()
    for i in thread:
        i.join()
def get_ptoto(u, count):
    print(u, '===>', count, '.jpeg')
    urllib.request.urlretrieve(\
        'https:' + u,
        str(count) + '.jpeg')
if __name__ == '__main__':
    main()
#!/usr/bin/env python3
#coding=utf-8


def special_str_replace(special):
    limitstr = r'\/:*?"<>|'
    test = list(special)
    for index in range(len(test)):
        if test[index] in limitstr:
            test[index] = '_'
            
    return ''.join(test)

结果

结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-10 16:48:00 | 显示全部楼层
不好看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 17:22:25 | 显示全部楼层

拿来练手的!图片都是一个表情,没有什么好看的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-10 17:24:14 | 显示全部楼层
至今还不会自动登录网页,进行爬取。不知道有没有现成的教学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-12 19:12:59 | 显示全部楼层
#!/usr/bin/env python3
#coding=utf-8

from special_str_replace import special_str_replace
import urllib.request,urllib.error
from bs4 import BeautifulSoup as bfs
import threading
import os

def main(page):
    url = 'https://www.woyaogexing.com/touxiang/z/qlshouhui/' + page
    home = 'https://www.woyaogexing.com'
    html = gethtml(url)
    for page_nu in get_page_list(html):
        get_photo_url_list(gethtml(home + page_nu))

def gethtml(url):
    head = {
    'Accept-Language': 'zh-CN,zh;q=0.9',
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.30 Safari/537.36"
    }
    
    req = urllib.request.Request(url=url, headers=head)
    response = urllib.request.urlopen(req)
    html = bfs(response,'html.parser') #解析html
    # print(html)
    
    return html

def get_page_list(html):
    data = []
    subject = html.find('div', class_="pMain")
    
    for i in subject.find_all('a', class_="img"):
        data.append(i.attrs['href'])
    
    # print(data)
    return data
    
def get_photo_url_list(html):
    #<h1>....</h1>
    title = str(html.find('h1').string).replace(':','_')
    #替换字符串中的特殊字符为'_',为了创建文件夹
    title = special_str_replace(title)
    if not os.path.exists('./' + title):
        os.mkdir(title)
    os.chdir(title)
    #ul class="artCont cl"
    filterurl = html.find('ul', class_="artCont cl")
    ph_url = []
    for attr in filterurl.find_all('a'):
        # print(attr.attrs)
        ph_url.append(attr['href'])
        
    thread_photo(ph_url)
    os.chdir('../') #返回文件夹
def thread_photo(url):
    thread = []
    count = 0
    for i in url:
        count += 1
        thread.append(threading.Thread(target=get_ptoto, args=(i,count)))
    for i in thread:
        i.start()
    for i in thread:
        i.join()
def get_ptoto(u, count):
    print(u, '===>', count, '.jpeg')
    urllib.request.urlretrieve(\
        'https:' + u,
        str(count) + '.jpeg')
if __name__ == '__main__':
    for i in range(2,9):
        main('index_' + str(i) +'.html')
QQ浏览器截图20200612191107.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-22 10:25:46 | 显示全部楼层
如何获取一个网页的所有图片呢  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-31 07:35:38 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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