파이썬 파충류 시작하기 - 사진을 일치 정기적으로 자원을

다른 아무것도 잡아 사진에 스크립트를 작성, 오랜 시간이 파이썬 구문을 읽을하는 기능은, 그것은 상대적으로 간단 달성한다 :

사진이 포함 된 모든 페이지의 집 주소를 확보하십시오.
2. 일레븐, 홈 개방의 주소를 얻기 다음 주소에서 모든 사진을 한 페이지를 얻을 것이다.
다음 IMG 디렉토리에있는 모든 사진을 포함 3. 다운로드 한 페이지.
다음 페이지, 페이지 하나가있는 경우 플립 매개 변수, 재귀 다운로드 이미지를 찾기 4.

참고 : 종종 데이터를 잡아하지 마십시오, 서버 압력, 인터넷 사용자의 품질을 가지고 마십시오. 네트워크에서 데이터는 침해를 알려주십시오.

샘플을 실행합니다 :

[이미지 소스 스테이션 보안 체인 메커니즘을 가질 수있다, 체인이 실패 덤프, 직접 업로드 (IMG-kkKe552n-1583931038668) (https://user-gold-cdn.xitu.io/2020/3/3 아래 그림을 저장하는 것이 좋습니다 / 170a0b39b18e472c? = 2798 & H w = 1832 & F = PNG & S = 1,517,019)]

[이미지 소스 스테이션 보안 체인 메커니즘을 가질 수있다, 체인이 실패 덤프, 직접 업로드 (IMG-g7ToUa0b-1583931038669) (https://user-gold-cdn.xitu.io/2020/3/3 아래 그림을 저장하는 것이 좋습니다 / 170a0b404251564d? = 2798 & H w = 1832 & F = PNG & S = 1,186,006)]

출처 :

import os
import time
import urllib

import requests
import re

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'
}


# 单页数据遍历
def getImages(img_url, page):
    page_url = img_url
    # 如果页码大于0,说明需要翻页,拼装页码
    if page > 1:
        page_url = img_url + '/' + str(page)
        print(f'加载翻页数据:{page_url}')
    response = requests.get(page_url, headers=headers)
    html = response.text
    # urls = re.findall('<img alt=".*?" class="alignnone size-full" data-src=".*?"', html)

    try:
        # 判断是否有下一页
        next_page = '<i class="iconfont icon-arrowright"></i>'
        # 如果有下一页,页码+1
        if re.search(next_page, html).group():
            page = page + 1
        else:
            page = 1
    except AttributeError:
        page = 1

    urls = re.findall('<a href=".*?" alt=".*?" title=".*?">', html)

    print(f'页面全部A标签:{urls}')

    for url in urls:
        item_content = re.search('<a href="(.*)" alt.*?title="(.*)"', url)
        name = item_content.group(1)[:]
        title = item_content.group(2)[:]
        name = name.split('&')[0]
        name = urllib.parse.unquote(name)
        print(f'处理后的名称:{name}')
        time.sleep(5)

        file_name = name.split('/')[-1]
        print(f'开始下载图片:{file_name}')
        path = './imgs/' + title
        img_path = path + '/' + file_name

        # 存在相同图片,跳过此次下载
        if os.path.exists(img_path):
            print(f'重复图片,跳过下载:{file_name}')
            continue

        isExists = os.path.exists(path)
        # 创建目录
        if not isExists:
            os.makedirs(path)
        # 下载图片
        response = requests.get(name, headers=headers)
        with open(img_path, 'wb') as f:
            f.write(response.content)
            f.close()

    if page > 1:
        getImages(img_url, page)


response = requests.get('https://www.vmgirls.com', headers=headers)
print(response.request.headers)
html = response.text
print(response.text)

main_urls = re.findall('https://www.vmgirls.com/(\d.*).html', html)
main_urls = {}.fromkeys(main_urls).keys()
print('获取到资源页面:', main_urls)

# 取单页数据进行抓取
for url in main_urls:
    full_url = 'https://www.vmgirls.com/' + url + '.html'
    print(f'开始爬取:{full_url} 数据。')
    getImages(full_url, 1)

게시 된 122 개 원래 기사 · 원 찬양 238 · 전망 760 000 +

추천

출처blog.csdn.net/c__chao/article/details/104805310