【python】实现某个网页的链接获取与实现本地的文件目录创建与移动

本次主要分享两个小脚本操作,使用python语言实现。

1.网页链接获取

其中有个就是常用的你想要获取到某个网页当中的全部所需的链接,但是又对于爬虫等框架知识不清楚,其实没有必要搞那么复杂,只要简单几步,便可以实现了,并且将做些简单的介绍。

Talk is cheep,show me the Code!

直接上代码!

"""
实现内容:
实现了将微信公众号当中的网页中的符合要求的网页链接爬取下来
并且存入到txt文件当中

"""
from bs4 import BeautifulSoup#用于解析网页
import requests

def main():
    #改这里
    url='https://mp.weixin.qq.com/s/ZqLPc2ja72qyfV2n-0mYSA' 

    web_data = requests.get(url)
    soup=BeautifulSoup(web_data.text,'lxml')

    #改这里
    links_file=open('G:/Desktop/link.txt','a')#自定义,你也可以不写入文本文件当中,或者设计链表存储也可以

    print("begin!")
    for i in range(1,11):
    
        #改这里
        links = soup.select('#js_content > section:nth-of-type('+str(i)+') a')
    
        for href in links:
            b = href.text#获得网页链接对应的标题头
            c = href.attrs['href']#获得网页链接
            #print(b)
            #print(c)
            result=c+"\n"结果进行拼接,使用tab键进行位置调整
            links_file.write(result)

    links_file.close()
    print("Done!")

if __name__='__main__':
    main()

其中主要知道两个导入包,一个request,一个BeautifulSoup,一如代表解释一样,request获取网页内容,而BeautifulSoup主要用来解析网页,因为如果你直接获取了网页内容的话,那么你将获得的是一堆的html网页描述,而其中的链接就藏在了里面。

第二个,便是要注意下,你必须要学会定位你要找的链接块内容所在。

以本文为例,要爬取下这个网页的所有链接内容,则需要这么操作!

图片设计上传出现问题,建议使用百度云打开(查看密码:nq6f)查看下!

当其中的第六步获得之后,你变可以看见了为什么我在soup的操作时这样的!↓

links = soup.select('#js_content > section:nth-of-type('+str(i)+') a')

('+str(i)+')表示的只是我这里总共其实被网页表示分成了10块,我这样就设定个循环便可以获得10块里的所有链接!

最后的 'a' 是表示要获得的是的内容,不可不加!

注意,当一般你操作的时候,获得的是  #js_content > section:nth-child(10) a'
而这其中,nth-child是会被提示错误,必须换成(Pycharm也会提示)nth-of-type.

而后你就是想写什么就写什么吧,这个是单独一个网页的,如果需要多个网页又需要更好的数据处理结果,那么你可能就需要更加深入的去了解相关的爬虫工具了,而本文实现的这个网页内容,很通用,最难搞定的也就是单独提出的你要定位的问题而已,而本文你注意看下,只要改三处地方,便可以你自己用自己的了!

创建目录与移动文件


"""
实现内容:
将符合某个文件名的文件移动到对应的文件目录当中去
"""
import os
import shutil

#创建文件夹
def makeDir(base_path,fileName):

    path=base_path+'/'+fileName
    isExits=os.path.exists(path)
    if not isExits:
        os.makedirs(path)

#获得文件名
def getFileNamesInADir(path):
    names=[]
    for root,dirs,files in os.walk(path):
        for file in files:
            if os.path.splitext(file)[-1] =='.pdf':
                names.append(file)
    return names

#获取创新文件夹名
def getDirNames(path):
    dirNames=set()
    for root,dirs,files in os.walk(path):
        for file in files:
            #判断要创建的文件名是否是在【】当中 此处可自定义修改
            res = 1 if '【' in file and '】' in file else 0
            if res == 1:
                dirName = file.split('【')[1].split('】')[0]
                dirNames.add(dirName)
            else:
                pass
    return dirNames


#移动文件
def moveFileToDir(filename,base_path,dirName):
    path = base_path+'/'+dirName
    srcFile = base_path+'/'+filename
    dstFile = base_path+'/'+dirName+'/'+filename
    res = 1 if os.path.exists(path) else 0
    if res == 1 :
        if dirName in filename:
            shutil.move(srcFile,dstFile)
            print("move %s -> %s" %(srcFile,dstFile))
        else:
            pass
    else:
        makeDir(base_path,filename)


def main():
    base_path = 'G:/WeChatDownload/码农有道 - pdf'

    #获取文件名
    filesNames = getFileNamesInADir(base_path)
    # print(names)

    #获取要创建的文件夹名
    dirNames = getDirNames(base_path)
    # print(dirNames)
    # print('创建文件夹开始。。。。。')
    # for name in dirNames:
    #     makeDir(base_path,name)
    # print('创建文件夹结束!')
    print("移动开始!")
    for filesName in filesNames:
        for dirName in dirNames:
            moveFileToDir(filesName,base_path,dirName)
    print("移动结束!")

if __name__ == '__main__':
    main()

这移动创建文件目录的地方,可以自行阅读下,不难,比之网页爬取的有点需要解释不一样,

嘛就这样了,谢谢观看啦~哦对了,转载请注明出处,否则谢绝转载。

 

你可能感兴趣的:(Python)