Python 爬虫实战案例 : 煎蛋网全站图片爬虫
来源:互联网 发布:php 502 bad gateway 编辑:程序博客网 时间:2024/05/19 04:53
import requestsimport osimport timefrom bs4 import BeautifulSoupimport random# 发出请求获得HTML源码def get_html(url): # 指定一个浏览器头 headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'} # 代理,免费的代理只能维持一会可能就没用了,自行更换 proxies = { "http": "http://36.34.14.64:6436" } try: # Requests库的get请求 resp = requests.get(url, headers=headers) print(resp.status_code) if not resp.status_code == 200: # 如果请求被阻,就使用代理 print("使用代理") resp = requests.get(url, headers=headers, proxies=proxies) except: # 如果请求被阻,就使用代理 resp = requests.get(url, headers=headers, proxies=proxies) return resp# 创建文件夹的函数,保存到D盘def mkdir(path): # os.path.exists(name)判断是否存在路径 # os.path.join(path, name)连接目录与文件名 isExists = os.path.exists(os.path.join("D:\jiandan", path)) # 如果不存在 if not isExists: print('makedir', path) # 创建文件夹 os.makedirs(os.path.join("D:\jiandan", path)) # 切换到创建的文件夹 os.chdir(os.path.join("D:\jiandan", path)) return True # 如果存在了就返回False else: print(path, 'already exists') return False# 获得图片地址调用download函数进行下载def get_imgs(): # 调用函数获得所有页面 for url in all_page(): path = url.split('-')[-1] # 创建文件夹的函数 mkdir(path) # 调用请求函数获得HTML源码 html = get_html(url).text # 使用lxml解析器,也可以使用html.parser soup = BeautifulSoup(html, 'lxml') # css选择器 allimgs = soup.select('div.text > p > img') # 调用download函数下载保存 download(allimgs) # 执行完毕打出ok print('ok')# 获得所有页面def all_page(): base_url = 'http://jandan.net/ooxx/' # BeautifulSoup解析页面得到最高页码数 soup = BeautifulSoup(get_html(base_url).text, 'lxml') # 获得最高页码数 allpage = soup.find('span', class_="current-comment-page").get_text()[1:-1] urllist = [] # for循环迭代出所有页面,得到url for page in range(1, int(allpage)+1): allurl = base_url + 'page-' + str(page) urllist.append(allurl) return urllist# 保存图片函数,传入的参数是一页所有图片url集合def download(list): for img in list: urls = img['src'] # 判断url是否完整 if urls[0:5] == 'http:': img_url = urls else: img_url = 'http:' + urls filename = img_url.split('/')[-1] # 保存图片 with open(filename, 'wb') as f: # 直接过滤掉保存失败的图片,不终止程序 try: f.write(get_html(img_url).content) print('Sucessful image:',filename) except: print('Failed:',filename)if __name__ == '__main__': # 计时 t1 = time.time() # 调用函数 get_imgs() print(time.time() - t1)
阅读全文
0 0
- Python 爬虫实战案例 : 煎蛋网全站图片爬虫
- Python爬虫实战(四) :下载煎蛋网所有妹子照片
- 自己用python捣鼓的煎蛋网图片爬虫
- Python网络爬虫(4)煎蛋网妹子图片抓取
- python——基于煎蛋网的简单图片爬虫
- python爬虫之反爬虫情况下的煎蛋网图片爬取初步探索
- 手把手教你用 Python 爬虫煎蛋妹纸海量图片
- 手把手教你用Python爬虫煎蛋妹纸海量图片
- 手把手教你用Python爬虫煎蛋妹纸海量图片
- 煎蛋网爬虫
- 爬虫-煎蛋MM图
- 《python爬虫实战》:爬取图片
- python爬虫实战 爬取天极图片
- Python爬虫入门案例
- python链接爬虫案例
- nodejs爬虫----爬取煎蛋网美女图片
- java编写的爬虫爬取煎蛋的图片
- Python学习笔记56(爬虫:煎蛋网上的妹子图)
- 在VS中 使用C#访问Lua
- commons.beanutils.ConversionException: No value specified解决办法
- c#Task的continuewith
- ofbiz实战——实验项目批次管理界面以及代码
- win7下面安装mongo步骤(开发环境为pycharm)
- Python 爬虫实战案例 : 煎蛋网全站图片爬虫
- Eclipse IDE 4.5 64位下载
- 音视频下载工具:you-get
- uva 10934 有k个气球 用高n层楼来测试气球硬度 求最小扔几次可以测出来
- HDU
- linux ps命令,查看进程cpu和内存占用率排序
- SPARK提交job的几种模式
- BootStrap :环境搭建;布局容器;视口:在移动设备上使用,用于比例缩小视口内容;栅格系统;Col-屏幕尺寸-所占栅格数
- 备份与恢复