本次主要分享两个小脚本操作,使用python语言实现。
其中有个就是常用的你想要获取到某个网页当中的全部所需的链接,但是又对于爬虫等框架知识不清楚,其实没有必要搞那么复杂,只要简单几步,便可以实现了,并且将做些简单的介绍。
直接上代码!
"""
实现内容:
实现了将微信公众号当中的网页中的符合要求的网页链接爬取下来
并且存入到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()
这移动创建文件目录的地方,可以自行阅读下,不难,比之网页爬取的有点需要解释不一样,
嘛就这样了,谢谢观看啦~哦对了,转载请注明出处,否则谢绝转载。