一整个界面的卡通情头我都要了--实操教程(附源码)

嗨,又来爬图片来了,发现了一个算宝藏的网站,打算爬一波情侣头。

首先来测试一下,先抓包。F12,就不教了,看图:

一整个界面的卡通情头我都要了--实操教程(附源码)_第1张图片

Get请求,URL地址也给到了,header的User-Agent也看到了,这类网上很多,随意百度也行。

接下来找里面的一张图片地址,例如:http://img.touxiangkong.com/uploads/allimg/2023030410/2yknchwxmew.jpg

浅浅的测试一下,能不难爬。

import requests

jpg_url = 'http://img.touxiangkong.com/uploads/allimg/2023030410/2yknchwxmew.jpg'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
}
result = requests.get(url=jpg_url, headers=headers).content
with open('11.jpg','wb') as w:
    w.write(result)

不出意外的意外,是没有意外的,下载成了。(如果有gbk或者其他的编码无法解码,可以直接修改pycharm里面的setting里面的encoding编码。或者指定result.encoding='utf-8')

一整个界面的卡通情头我都要了--实操教程(附源码)_第2张图片

接下来分析一下,如何爬取:

一整个界面的卡通情头我都要了--实操教程(附源码)_第3张图片

看到了吗,画框的全部都是,今天要全部下载吗?不,我不想,但是你可以。

先把里面的url全部拿出来。

我们使用xpath。别问为什么,想用啥用啥。bs4也行,selenium也可以。

先请求一下网站

url = 'http://touxiangkong.com/katong/qinglv/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
}

result = requests.get(url=url, headers=headers).content.decode('utf-8')
print(result)

然后根据信息获取关键url(有些博主是直接在网页端看的,都可以--CTRL+U即可)

一整个界面的卡通情头我都要了--实操教程(附源码)_第4张图片很明显,我们直接锁定这一块,实在看不懂的,学一下HTML,再不行,直接看最后,拿代码跑吧。

import requests
from lxml import etree

url = 'http://touxiangkong.com/katong/qinglv/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
}

result = requests.get(url=url, headers=headers)
result.encoding = 'utf-8'

html = etree.HTML(result.text)
get_html_href = html.xpath('//*[@class="excerpts-wrapper"]/div/article/a/@href')
print(get_html_href)

到了这里,我们就把http://touxiangkong.com/katong/qinglv下的所有的情侣头像网页地址拿到了。可以看到第一个就是我们上面请求的网页,也就是/touxiang/84343.html。

「其实这还有第二页,第三页...这里就不演示了,怎么样获取,gitee上很多就给到了示例,可以直接去看看」


我们把第一页的前三个搞到手。还是一样的操作,点进去,然后CTRL+U,看源码获取链接。

一整个界面的卡通情头我都要了--实操教程(附源码)_第5张图片也就是这一段了。拿到它,先请求。

import requests
from lxml import etree

url = 'http://touxiangkong.com/katong/qinglv/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
}

result = requests.get(url=url, headers=headers)
result.encoding = 'utf-8'

html = etree.HTML(result.text)
get_html_href = html.xpath('//*[@class="excerpts-wrapper"]/div/article/a/@href')

index = 'http://touxiangkong.com/touxiang/'

for other_url in get_html_href[:3]:
    index_url = index + other_url
    print(index_url)
"""
http://touxiangkong.com/touxiang/84343.html
http://touxiangkong.com/touxiang/84340.html
http://touxiangkong.com/touxiang/84174.html
"""

这样也就拿到了前三个网页的url了,还是需要分析。

「点进去84343.html的网页后你会发现网址是:http://touxiangkong.com/touxiang/84343.html。所以不用想也知道,需要组合起来。」

接下来请求这些地址,拿到text。然后获取到他们的url

import requests
from lxml import etree

url = 'http://touxiangkong.com/katong/qinglv/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
}

result = requests.get(url=url, headers=headers)
result.encoding = 'utf-8'

html = etree.HTML(result.text)
get_html_href = html.xpath('//*[@class="excerpts-wrapper"]/div/article/a/@href')

index = 'http://touxiangkong.com'

url_list = []
for other_url in get_html_href[:3]:
    index_url = index + other_url
    url_list.append(index_url)

for html_value in url_list:
    other_result = requests.get(url=html_value, headers=headers)
    other_result.encoding = 'utf-8'
    other_html = etree.HTML(other_result.text)
    get_other_href = other_html.xpath('//*[@class="content-wrap"]/div/article/div/div/div/div/p/img/@src')
    print(get_other_href)

别问我的xpath为什么这么写,太low了。你想!

获取到全部的url后,就可以开始下载了,最后还剩下一个问题,就是名称问题了,没办法,因为网址这边没有可以获取的名称,所以我们随意点。

数字命名,最后看看完整,没有封装的代码:

import requests
from lxml import etree

url = 'http://touxiangkong.com/katong/qinglv/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
}

result = requests.get(url=url, headers=headers)
result.encoding = 'utf-8'

html = etree.HTML(result.text)
get_html_href = html.xpath('//*[@class="excerpts-wrapper"]/div/article/a/@href')

index = 'http://touxiangkong.com'

url_list = []
for other_url in get_html_href[:3]:
    index_url = index + other_url
    url_list.append(index_url)

for html_value in url_list:
    other_result = requests.get(url=html_value, headers=headers)
    other_result.encoding = 'utf-8'
    other_html = etree.HTML(other_result.text)
    get_other_href = other_html.xpath('//*[@class="content-wrap"]/div/article/div/div/div/div/p/img/@src')
    num = 0
    for img_url in get_other_href:
        img_request = requests.get(url=img_url, headers=headers).content
        with open(f'情头{num}.jpg','wb') as w:
            w.write(img_request)
            num += 1

最后效果呈现:一整个界面的卡通情头我都要了--实操教程(附源码)_第6张图片

最终封装源码地址:https://gitee.com/qinganan_admin/reptile-case.git

你可能感兴趣的:(python,pycharm,开发语言,ide)