python3 爬取豆瓣电影

  • 直接爬取豆瓣
  • 使用线程池爬取豆瓣

由于今年的疫情原因,我们不能到电影院消费,就无法体验右手牵女友,左手牵女友闺蜜的乐趣。
但是,即使在家里,也得撒一波…

直接爬取豆瓣

以上说的都不是重点,重点是,我们要看看怎么爬…
别想歪了,我们是爬取网站的电影,不是爬山哈 !!
先看一下豆瓣网,每页显示的电影数量

这里直接上代码,我们不用线程池,看看,10页电影图片,需要多少时间

# -*- coding: utf-8 -*-
"""
@ auth : carl_DJ
@ time : 2020-8-14
"""import os
import time
import requests
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
from concurrent.futures import ThreadPoolExecutor ,wait,ALL_COMPLETEDdouban_path = '../py_class/pict'
if not os.path.exists(douban_path):os.mkdir(douban_path)def down_load(url):#添加请求头信息,防止被网站屏蔽掉headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}r = requests.get(url,headers=headers)soup = BeautifulSoup(r.text,'lxml')#找到当前页面所有图片的父divcontent = soup.find('div',class_= 'article') #获取所有电影图片的标签images = content.find_all('img')#所有图片的下载链接pic_link_list = [image['src'] for image in images] #获取所有图片的名字 pic_name_list =[image['alt'] for image in images] for name,link in zip(pic_name_list,pic_link_list):#urlretrieve暂时对 python3.7的支持,不太稳定,运行时报错,# urlretrieve(link,f'{douban_path}/{name}.jpg')#运用老方法来读写html = requests.get(link)with open(f'{douban_path}/{name}.jpg','wb') as f :f.write(html.content)print(f'{url}所有电影下载完成')def main():stat_urls = ['https://movie.douban.com/top250',]#使用参数start={25*i},因为每页显示25个电影for i in range(1,10):stat_urls.append(f'https://movie.douban.com/top250?start={25*i}&filter=')# print(stat_urls)#开始时间start_time  = time.time()#执行下载动作for url in stat_urls:down_load(url)#结束时间end_time = time.time()print('='*50)print(f'运行时按{end_time -  start_time}')if __name__ == '__main__':main()

我们寻找class = ‘article’ 这边标签

content = soup.find('div',class_= 'article')

是因为 我们要爬取的各个电影的图片,是class = ‘article’ 的子类

有句老话说的好:找到了老子, 还怕找不到小子吗??


最后,爬取的时间 是 49s+

使用线程池爬取豆瓣

我们要看看,使用多线程,到底能提速多少

"""
@ auth : carl_DJ
@ time : 2020-8-14
"""import os
import time
import requests
from bs4 import BeautifulSoup
from urllib.request import urlretrieve
from concurrent.futures import ThreadPoolExecutor ,wait,ALL_COMPLETEDdouban_path = '../py_class/pict'
if not os.path.exists(douban_path):os.mkdir(douban_path)def down_load(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}r = requests.get(url,headers=headers)soup = BeautifulSoup(r.text,'lxml')#找到当前页面所有图片的父divcontent = soup.find('div',class_= 'article') #获取所有电影图片的标签images = content.find_all('img')#所有图片的下载链接pic_link_list = [image['src'] for image in images] #获取所有图片的名字 pic_name_list =[image['alt'] for image in images] for name,link in zip(pic_name_list,pic_link_list):#urlretrieve暂时对 python3.7的支持,不太稳定,运行时报错,# urlretrieve(link,f'{douban_path}/{name}.jpg')#运用老方法来读写html = requests.get(link)with open(f'{douban_path}/{name}.jpg','wb') as f :f.write(html.content)print(f'{url}所有电影下载完成')def main():stat_urls = ['https://movie.douban.com/top250',]for i in range(1,10):stat_urls.append(f'https://movie.douban.com/top250?start={25*i}&filter=')# print(stat_urls)#开始时间start_time  = time.time()#定义10个线程with ThreadPoolExecutor(max_workers=10) as executor:futures = []  #获取运行结果for url in stat_urls:future = executor.submit(down_load,url)futures.append(future)#等到所有线程执行完成,在进行后续逻辑wait(futures,return_when=ALL_COMPLETED)#结束时间end_time = time.time()print('='*50)#打印时间差print(f'运行时按{end_time -  start_time}')if __name__ == '__main__':main()

我们看看运行结果,20s+,确实提速很多,所以,能多线程,就别单线程,让更多的资源动起来,动起来~ ~

最后给大家看一下,爬取的图片 是啥样子的

电影的图片名字都会显示。
؏؏☝ᖗ乛◡乛ᖘ☝؏؏
最后,希望大家都能爬到自己想要的小电影~ ~
但是,还得提醒一下:

适当的可以怡情,过多就伤身了啊~

Python3,多线程爬取某瓣小电影~ ~相关推荐

  1. Python3简单爬虫:爬取猫眼评分top100电影

    Python3:用xpath库爬取猫眼评分top100电影 在看<Python3 网络爬虫开发实战中>一书学习时,书中第三章例子用re正则匹配来爬取电影的所需数据,虽然爬取速度快,效率好, ...

  2. 【Python】多线程爬取某站高颜值小姐姐照片(共1.62GB)

    文章目录 写在前面 目标网站 依赖模块 爬虫思路 完整代码 爬虫结果 单图预览 多图预览 引用参考 写在前面 本文使用Python编写爬虫脚本,实现多线程爬取唯美女生网站高颜值小姐姐的所有照片. 目标 ...

  3. python3爬虫系列16之多线程爬取汽车之家批量下载图片

    python3爬虫系列16之多线程爬取汽车之家批量下载图片 1.前言 上一篇呢,python3爬虫系列14之爬虫增速多线程,线程池,队列的用法(通俗易懂),主要介绍了线程,多线程,和两个线程池的使用. ...

  4. python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——小猿搜题

    python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论--小猿搜题 import requests import re import requests from bs4 import ...

  5. python3爬虫之多线程爬取英雄联盟所有皮肤图片

    python3爬虫之多线程爬取英雄联盟所有皮肤图片 线程不要太高,容易出错,大约用时1分钟左右. import requests import json import os import thread ...

  6. 多线程爬取豆瓣电影top250

    多线程爬取豆瓣电影top250 之前写过一篇有关多线程爬虫的文章,里面对分析过程进行了详细的介绍,所以这里就不对过程进行分析了,如果你是刚接触爬虫的新手的话可以参考一下我之前写的爬虫: https:/ ...

  7. Python爬虫新手入门教学(十七):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  8. python多线程爬取世纪佳缘女生资料并简单数据分析

    一. 目标 ​ 作为一只万年单身狗,一直很好奇女生找对象的时候都在想啥呢,这事也不好意思直接问身边的女生,不然别人还以为你要跟她表白啥的,况且工科出身的自己本来接触的女生就少,即使是挨个问遍,样本量也 ...

  9. 2020-10-18 今天来说说如何爬取猫眼上的电影信息

    今天来说说如何爬取猫眼上的电影信息 最近小编试图使用requests+BeautifulSoup取去抓取猫眼上的电影信息,但尝试一番后,发现输出的电影评分.评分人数和票房都是乱码.案例见下面代码.之后 ...

  10. Python爬虫入门教程 14-100 All IT eBooks多线程爬取

    All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...

最新文章

  1. R语言绘图:28个实用程序包
  2. react-native 小米手机和 mac 安装
  3. python数据处理实例-python数据分析实例(1)
  4. excel进销存管理系统_通用Excel助力企业定制开发信息化系统常用功能模块
  5. python查看函数参数快捷键_Python基础知识—快捷键
  6. 【C++深度剖析教程8】C++的操作符重载的概念
  7. 可以用什么代替平面镜
  8. Jquery消息提示插件toastr使用详解
  9. FastDFS存储服务器部署
  10. 合成分红游戏源码_ThinkPHP宠物养成合成类游戏APP陀螺世界程序源码 已优化
  11. 利用阿里云oss实现上传视频和图片功能
  12. 苹果系统和安卓系统的区别_又一款影视APP,这次支持苹果安卓双系统!
  13. 如何使用谷歌浏览器远程调试安卓/ios真机H5应用?
  14. Nordic错误笔记
  15. 【转】dB、dBm是什么意思~
  16. 加权黑猩猩优化算法(WChOA)附Matlab代码
  17. 一文看懂业界在离线混部技术
  18. 幼儿园科学教案计算机,大班科学教案4篇
  19. CSAPP 第2章 信息表示和处理课后作业
  20. 交换机--- 生成树--三层架构总结

热门文章

  1. 微信群-街边二维码别乱扫-这些传销陷阱要当心骗局
  2. 需求分析说明书、概要设计说明书、详细设计说明书部分样例
  3. 华硕服务器怎么装系统教程,买了华硕电脑不会装系统?教你简单快速的系统重装教程...
  4. 数据分类算法-朴素贝叶斯
  5. 学习笔记:中国大学MOOC《计算机程序设计C++》第3周单元测试
  6. 苹果手机为什么Apple ID会被停用
  7. Ubuntu 桌面美化教程
  8. Python库安装之requirements.txt, environment.yml
  9. oracle 中符号%3e,Oracle数据类型-----(数字格式)
  10. [转][酷酷的滕]我爱你语录