QingYi. 发表于 2021-6-26 19:36

使用Python来获取jk资源

代码很简单说一下感想吧

写代码切记不能操之过急了,一步一步来,思考怎么去构思这个代码再去做。

这个代码是我改改删删才做好的,写了删 删了写。

因为写的实在是太垃圾了,密密麻麻的,后续debug眼睛都看花了,分开写成函数,debug起来容易找,看起来又舒服。

其实这个代码可以直接丢给多线程去处理的,或者直接上scrapy框架。

在进入主页面的子页面的时候就可以去download开启线程了,然后找到主页面的的子页面的下一页的时候也可以进行download的了,我就没加了。

代码里面不懂的可以留言


结果图:


代码:
import os
import urllib
import requests
from lxml import etree
import re


def download(url):
    # print(url)
    resp = requests.get(url).text
    html = etree.HTML(resp)
    # 找到地址
    pic = html.xpath('//*[@id="big-pic"]/p//img/@src')
    # 找到name
    name = pic.split("/")[-1]
    # download
    urllib.request.urlretrieve(pic, "pic/{}".format(name))
    print("{}下载完毕".format(name))


def sub_page_pic(url, page):
    # 截取需要替换的url
    split_url = url.split("/")[-1]
    # 把.后面的数字提取出来,然后再拼接
    num_url = url.split(".")[-2].split("/")[-1]
    for i in range(2, page + 1):
      """
      第一页
      https://www.mmonly.cc/ktmh/dmmn/96196.html
      第二页后面以此类推
      https://www.mmonly.cc/ktmh/dmmn/96196_2.html
      """
      # 这里是拼接替换 具体可以分析一下网站是怎么组成的 如上
      change_url = url.replace(split_url, num_url + "_%d.html" % i)
      # 搞完之后直接丢进去download
      download(change_url)


# 找到所有下一页的内容
def next_page(sub_page_url):
    resp = requests.get(sub_page_url)
    resp.encoding = "gb2312"
    # 匹配有几页
    re_match = re.search(r".*?共(\d+)页", resp.text)
    # 页数转int 然后 把子页面和 子页面的页数丢给下一个函数去处理
    all_page = int(re_match.group(1))
    sub_page_pic(sub_page_url, all_page)


def first():
    url = "https://www.mmonly.cc/tag/jkzf/"
    resp = requests.get(url)
    resp.encoding = "gb2312"

    html = etree.HTML(resp.text)
    href = html.xpath('//*[@id="infinite_scroll"]/div/div/div/div/a/@href')
    # 首先我们需要找到最主页面的page 然后迭代page
    for item in href:
      resp = requests.get(item)
      # 设置编码 不然找不到
      resp.encoding = "gb2312"
      # 如果下一页存在的话,我们去迭代所有的下一页,找到之后再放入download里面去下载
      if "下一页" in resp.text:
            # 需要转换成str
            next_page(str(item))
      # 下载当前的页面 不包括下一页的内容
      download(str(item))


if __name__ == '__main__':
    if not os.path.exists("pic"):
      os.mkdir("pic")
    first()

Fargolee 发表于 2021-7-12 08:58

如何下载不同标签的图片?修改jkzf吗

QingYi. 发表于 2021-6-27 10:29

lihu5841314 发表于 2021-6-27 08:56
加油奥利给   去搞搞彼岸图网   我翻车好久了4K加密验证

链接发来

天空の幻像 发表于 2021-6-26 19:45

嗯!?壁纸吗

南归不NG 发表于 2021-6-26 20:13

看一下url我就跑

芥末绿茶 发表于 2021-6-26 20:38

南归不NG 发表于 2021-6-26 20:13
看一下url我就跑

哈哈哈,就你眼睛尖

wchp123 发表于 2021-6-26 20:52

这个url真不错

香芋 发表于 2021-6-26 21:09

这效果图我不是很明白,能多放几张吗

hhhhpaa 发表于 2021-6-26 22:12

url收了{:1_918:}

lsy832 发表于 2021-6-26 22:19

收藏了一个好东西

dreamcrazy 发表于 2021-6-26 22:31

谢谢LZ分享 当然我的本意不是为了这些图片 只是为了学习技术{:1_889:}

QingYi. 发表于 2021-6-26 22:55

Darkline 发表于 2021-6-26 22:24
反馈一下可以考虑增加分类存放   目前是统一存放在pic一个文件夹里的。

我靠好主意 下次一定
页: [1] 2 3 4
查看完整版本: 使用Python来获取jk资源