Pythonの爬虫類入門 - 絵に一致する正規の資源を

長い時間Pythonの構文を読むために他には何も、グラブ写真にスクリプトを記述するために、関数は、それが達成した、比較的簡単ではありません。

写真を含むすべてのページのホームアドレスを取得し1。
2. 11は、家庭用のオープンのアドレスを取得するには、次のアドレスで、すべての画像を単一のページを取得します。
3.次のimgディレクトリにすべての画像を含む単一のページをダウンロードしてください。
次のページがある場合は、ページ1をフリップパラメータ、再帰的なダウンロードイメージの検索4.。

注:多くの場合、サーバー圧力をデータをつかむしないでください、インターネットユーザーの品質を持って行ってください。ネットワークからのデータは、侵害をお知らせください。

サンプルを実行します。

[画像のダンプはチェーンが失敗し、発信局は、(IMG-kkKe552n-1583931038668)直接アップロード(https://user-gold-cdn.xitu.io/2020/3/3ダウン画像を保存することが推奨され、セキュリティチェーン機構を有していてもよいです/ 170a0b39b18e472c?= 2798&H W = 1832&F = PNG&S = 1517019)]

[画像のダンプはチェーンが失敗し、発信局は、(IMG-g7ToUa0b-1583931038669)直接アップロード(https://user-gold-cdn.xitu.io/2020/3/3ダウン画像を保存することが推奨され、セキュリティチェーン機構を有していてもよいです/ 170a0b404251564d?)= 1832 = 2798&H&W = PNG&S = 1186006 F]

出典:

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