最近在学习python的爬虫,而且玩的不亦说乎,所以写个博客,记录并分享一下。php
需下载如下模块html
bs4 模块python
requests 模块函数
""" 功能:下载指定url内的全部的pdf 语法:将含有pdf的url放到脚本后面执行就能够了 """ from bs4 import BeautifulSoup as Soup import requests from sys import argv try: ##用于获取命令行参数,argv[0]是脚本的名称 root_url = argv[1] except: print("please input url behind the script!!") exit() ##得到含有全部a标签的一个列表 def getTagA(root_url): res = requests.get(root_url) soup = Soup(res.text,'html.parser') temp = soup.find_all("a") return temp ##从全部a标签中找到含有pdf的,而后下载 def downPdf(root_url,list_a): number = 0 ##若是网站url是以相似xx/index.php格式结尾,那么只取最后一个/以前的部分 if not root_url.endswith("/"): index = root_url.rfind("/") root_url = root_url[:index+1] for name in list_a: name02 = name.get("href") ##筛选出以.pdf结尾的a标签 if name02.lower().endswith(".pdf"): pdf_name = name.string number += 1 print("Download the %d pdf immdiately!!!"%number,end=' ') print(pdf_name+'downing.....') ##由于要下载的是二进制流文件,将strem参数置为True response = requests.get(root_url+pdf_name,stream="TRUE") with open(pdf_name,'wb') as file: for data in response.iter_content(): file.write(data) if __name__ == "__main__": downPdf(root_url,getTagA(root_url))
利用str.rfind("S") 函数来得到 S 在str 从右边数第一次出现的index学习
使用str.lower().endswith("S") 函数来判断str 是否以S/s 结尾网站