Доуту проиграет? несуществующий

задняя часть Python программист GitHub рептилия

本文概要

Предисловие:

Эта статья очень проста и понятна, и можно сказать, что ее можно быстро освоить даже с нулевой базой. Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение, автор ответит как можно скорее. Код этой статьи хранится вgithub

1. Проанализируйте URL-адрес пакета смайликов

进入斗图啦
1. Войдите на сайт Doutula, нажмите **«Последние выражения»**, а затем нажмите на вторую и третью страницы, правила следующие:

Первая страница:воооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооТретья страница:воооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооЧетвертая страница:вооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо

Как можно видеть,pageЗначение связано с количеством нажатых страниц, поэтому мы получаем страницу для сканирования.url

2. Откройте элемент проверки, и вы увидитеhtmlисходный код

html源码
Видно, что картинки каждой страницы находятся внутри тега div, а затем каждый тег содержит изображение,

html源码
Мы хотим получить пакет смайлов, то есть получить URL-адрес изображения, содержащийся в теге a, мы можем использоватьxpathграмматика.

2. Практика

А. Получите информацию об img и gif, полученную из тега img, нам нужно отфильтроватьimgs = html.xpath("//div[#class='page-content text-center'//img[@class != 'gif']")

б. Следующим шагом является получение URL-адреса изображения. Приведенный выше код выглядит следующим образом:

    for img in imgs:
        # print(etree.tostring(img))
        img_url = img.get('data-original')  # 不知道为什么多个 !data ,去掉它
        img_url = img_url.replace("!dta", "")

в. Перехватите суффикс, получите имя файла и сохраните его.

        alt = img.get('alt') # 获取图片名字
        # alt 可能某些情况下需要处理非法字符(这些字符不可以当做名字保存)
        suffix = os.path.splitext(img_url)[1] # 对url进行分割,取数组中的第二位,得到后缀名
        filename = alt + suffix
        request.urlretrieve(img_url, 'images/' + filename) # 保存图片

Таким образом, вы сможете быстро сохранить нужные вам смайлики На Доуту, кто может вас побить

Полный код выглядит следующим образом:

def parse_page(url):

    headers = {
        'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    # print(response.text) # 打印html源代码
    html = etree.HTML(response.text)
    imgs = html.xpath("//div[@class='page-content text-center']//img[@class!='gif']")
    for img in imgs:
        # print(etree.tostring(img))
        img_url = img.get('data-original')  # 不知道为什么多个 !data ,去掉它
        img_url = img_url.replace("!dta", "")
        # print(img_url)
        alt = img.get('alt') # 获取图片名字
        # alt 可能某些情况下需要处理非法字符(这些字符不可以当做名字保存)
        print(alt)
        suffix = os.path.splitext(img_url)[1] # 对url进行分割,取数组中的第二位,得到后缀名
        filename = alt + suffix
        print(filename)
        request.urlretrieve(img_url, 'images/' + filename) # 保存图片

def main():
    for x in range(1,51): # # 爬取前50页 range(1,3) 这里相当于 1 2
        url = 'https://www.doutula.com/photo/list/?page=%d' % x
        parse_page(url)
        break

Конечный результат:

斗图.png

Всего 20 строк кода могут создать вас, который борется за поражение на Западе.Торопитесь и действуйте!

Конечно, это также может быть немного более продвинутым, то есть использовать многопоточность,Сканирование и загрузка асинхронно, вы можете загрузить тысячи смайликов за несколько секунд! Соответствующий код я тоже поставилgithub,друзья,кому надо ехать смотреть смотреть самим!




Для более интересного контента, пожалуйста, обратите внимание на паблик "bigdeveloper" - шоу программиста