多线程爬取豆瓣电影top250

之前写过一篇有关多线程爬虫的文章,里面对分析过程进行了详细的介绍,所以这里就不对过程进行分析了,如果你是刚接触爬虫的新手的话可以参考一下我之前写的爬虫:
https://blog.csdn.net/weixin_40481076/article/details/101312325
本次爬虫的目标网站:https://movie.douban.com/top250?
爬取信息:top250页面电影排名和电影名字、图片url,将图片下载下来,以电影排名+‘—’+电影名字命名图片

代码
程序实现多线程采用的是继承threading.Thread类重写一个新的线程类,爬虫的主要逻辑写在run方法里面。

import os
import threading
import urllib
import lxml
import requests
from lxml import etree'''多线程爬取豆瓣电影top250
'''class ConsumerThread(threading.Thread):def __init__(self,startUrl,headers,startNum,endNum,path,tname):threading.Thread.__init__(self)self.startUrl=startUrlself.headers=headersself.startNum=startNumself.endNum=endNumself.path=pathself.tname=tnamedef run(self):for page in range(self.startNum, self.endNum + 25, 25):res = request_page(self.startUrl + str(page), self.headers)# res.encoding = 'utf-8'#print(res)try:res = lxml.etree.HTML(res)for div in res.xpath("//div[@class='item']"):try:num=div.xpath('./div[1]/em[1]/text()')[0]name = div.xpath('./div[2]/div[1]/a[1]/span[1]/text()')[0]  # .extract()[0]imageUrl = div.xpath('./div[1]/a[1]/img[1]/@src')[0]  # .extract()[0]print(name)print(imageUrl)# introduce=div.xpath('./div[2]/div[2]/p[1]/text()').extract()[0]# dic = dict(zip('num','name','introduce','imageUrl'),[num,name,introduce,imageUrl])print('线程' + self.tname + '正在下载图片')print('')download_pic(imageUrl, str(num)+'---'+name, self.path)except Exception as e:print(str(e))continueexcept Exception as e:print(str(e))continuedef request_page(startUrl,headers):try:res=requests.get(startUrl,headers=headers)   #去掉headersres.encoding="utf-8"if res.status_code == 200:return res.textexcept requests.RequestException:return Nonedef get_headers():headers={'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',# 'Accept-Encoding': 'gzip, deflate, br',   #导致页面乱码'Accept-Language': 'zh-CN,zh;q=0.9','Connection': 'keep-alive','Host': 'movie.douban.com','Referer': 'https://movie.douban.com/top250?start=0&filter=','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}return headers# def makeFile(path,fileName,):
#     if not os.path.exists(path):
#         os.makedirs(path)def download_pic(url,name,path):if not os.path.exists(path):os.makedirs(path)try:res=urllib.request.urlopen(url,timeout=5).read()with open(path+name+'.jpg','wb') as file:file.write(res)file.close()except Exception as e:print(str(e))if __name__ == '__main__':url = 'https://movie.douban.com/top250?start='header=get_headers()thread1 = ConsumerThread(url,header,0,100,'d:/download/豆瓣电影top250AA/','A')thread2 = ConsumerThread(url,header,125,225,'d:/download/豆瓣电影top250BB/','B')thread1.start()thread2.start()thread1.join()thread2.join()print('*'*10+'下载完成!'+'*'*10)'''https://movie.douban.com/top250?start=
'''

多线程爬取豆瓣电影top250相关推荐

  1. python爬取豆瓣电影top250_用Python爬虫实现爬取豆瓣电影Top250

    用Python爬虫实现爬取豆瓣电影Top250 #爬取 豆瓣电影Top250 #250个电影 ,分为10个页显示,1页有25个电影 import urllib.request from bs4 imp ...

  2. 案例:爬取豆瓣电影Top250中的电影信息

    案例:爬取豆瓣电影Top250中的电影信息 豆瓣电影Top250首页 分析请求地址 在豆瓣电影Top250首页的底部可以确定电影信息一共有10页内容,每页25个电影信息,如下图: 切换页面,可以看到浏 ...

  3. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  4. Python爬虫 爬取豆瓣电影TOP250

    Python爬虫 爬取豆瓣电影TOP250 最近在b站上学习了一下python的爬虫,实践爬取豆瓣的电影top250,现在对这两天的学习进行一下总结 主要分为三步: 爬取豆瓣top250的网页,并通过 ...

  5. python爬取豆瓣电影top250_【Python3爬虫教程】Scrapy爬取豆瓣电影TOP250

    今天要实现的就是使用是scrapy爬取豆瓣电影TOP250榜单上的电影信息. 步骤如下: 一.爬取单页信息 首先是建立一个scrapy项目,在文件夹中按住shift然后点击鼠标右键,选择在此处打开命令 ...

  6. 爬取豆瓣电影Top250影片信息

    爬取豆瓣电影Top250影片信息 查看影片的详细信息 爬取过程 需安装的包 确定爬取地址 发送请求头 解析数据 保存数据 完整代码 查看影片的详细信息 进入豆瓣电影Top250,选择某一影片,右击,选 ...

  7. Python爬取豆瓣电影top250的电影信息

    Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...

  8. 03_使用scrapy框架爬取豆瓣电影TOP250

    前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关 ...

  9. jsoup爬取豆瓣电影top250

    文章目录 0.准备工作 1. 分析 2. 构思 3. 编程 3.1 定义一个bean,用于保存电影的数据 3.2 按照之前的构思进行编程 4.效果图 5.获取资源 5.1GitHub 5.2百度云 0 ...

最新文章

  1. Fiddler无法抓取HTTPS的问题,Fiddler证书无法安装终极解决方案,
  2. python批量修改word特定位置的内容_利用python批量修改word文件名的方法示例
  3. 淘宝上线了新功能,有点元宇宙的意思了
  4. 利用SNMP4J实现 Snmp Trap 完整例子
  5. 什么叫做微内核?与安卓系统有什么区别?
  6. python中scrapy框架项目_Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
  7. jQuery file upload测试
  8. C++ 编译器生成默认构造函数的四种情况
  9. 【优化求解】基于matlab遗传算法结合粒子群算法求解单目标优化问题【含Matlab源码 1659期】
  10. POJ 2393 Yogurt factory
  11. 爱思助手更新后无法连接服务器,爱思助手出现无法连接或连接超时的操作教程...
  12. 动词ing形式做定语的用法总结
  13. 28 | 机器学习:如何教会机器识别黑灰产?
  14. 3.8 js过渡效果
  15. Catboost参数全集
  16. 度阴山先生的《知行合一王阳明》有感
  17. tail -f和tail -F的区别
  18. 大连八中学2021年高考成绩查询,2021年大连各高中高考成绩排名及放榜最新消息...
  19. 数据仓库:分层设计详解
  20. 机器学习 - 线性模型

热门文章

  1. Android系统启动流程(nougat7.1.1_r6)
  2. 谁的等待恰逢花开:心态改变--【ssnc】
  3. Web3.exceptions.ExtraDataLengthError
  4. 数据库和SpringBoot基础01
  5. csdn任务系统说明
  6. 1.11 Xcode右侧界面介绍 [原创iOS开发-Xcode教程]
  7. 【香港城市大学党创寅教授团队PhD招收】
  8. Spark大数据项目架构
  9. FF新鲜事禁止弹窗方法
  10. django+mysql图书推荐系统-计算机毕业设计源码89399