• 欢迎访问1024小神,一个只会Python的程序猿不是一个好司机
  • 有什么想对我说的可以在留言板里给我留言哦~
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏1024小神吧

[Python] 使用Python来获取jk资源

Python 1024小神 3个月前 (07-04) 143次浏览 2个评论

代码很简单说一下感想吧

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

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

因为写的实在是太垃圾了,密密麻麻的,后续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')[0]
    # 找到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):
        """
        第一页
        [url]https://www.mmonly.cc/ktmh/dmmn/96196.html[/url]
        第二页  后面以此类推
        [url]https://www.mmonly.cc/ktmh/dmmn/96196_2.html[/url]
        """
        # 这里是拼接替换 具体可以分析一下网站是怎么组成的 如上
        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[1]/div/div[1]/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()

如有失效,请留言告知丨转载请注明原文链接:[Python] 使用Python来获取jk资源
点赞 (2)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. 寻梦
    vip的也能爬?
    2021-08-01 16:55
  2. hzj_2018
    感谢分享
    2021-07-09 09:26