实现原理及思路请参考我的另外几篇爬虫实践博客

py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/uncleyong/p/6892688.html
py3+requests+json+xlwt,爬取拉勾招聘信息:http://www.cnblogs.com/uncleyong/p/6960044.html
py3+urllib+re,轻轻松松爬取双色球最近100期中奖号码:http://www.cnblogs.com/uncleyong/p/6958242.html

实现代码如下:

#-*- coding:utf-8 -*-
import requests, threading, time
from lxml import etree
from bs4 import BeautifulSoup# 获取源码
def get_html(url):# url = 'http://www.doutula.com/article/list/?page=1'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'}request = requests.get(url=url, headers=headers) # 网址发送get请求response = request.content.decode('utf-8') # 获取源码# print(response)return response# 匹配图片url
def get_img_html(html):# soup = BeautifulSoup(html,'html.parser')soup = BeautifulSoup(html,'lxml') # 解析网页all_a = soup.find_all('a',class_='list-group-item') # 获取a标签,如果有class或id来命名,一定要加上名字# class="list-group-item"是a标签的名字# <a class="list-group-item" href="http://www.doutula.com/article/detail/7536783"># print(type(all_a)) # <class 'bs4.element.ResultSet'># print(all_a)for i in all_a:# print(i['href'])img_html = get_html(i['href']) # 获取内页源码,i['href']表示获取属性值# print(img_html)get_img(img_html)# 获取图片url
def get_img(html):# soup = etree.HTML(html) # 初始化源码# items = soup.xpath('//div[@class="artile_des"]') # //表示某个目录下,从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。# # []表示过滤条件# for item in items:#     imgurl_list = item.xpath('table/tbody/tr/td/a/img/@onerror')#     # print(imgurl_list)#     # start_save_img(imgurl_list)soup = BeautifulSoup(html, 'lxml')items = soup.find('div',class_='swiper-slide').find_all('div',class_='artile_des')# 不能写成这样:find_all后面不能跟find,因为find是找一个,find_all是找多个,从多个中找一个是不对的# items = soup.find('div',class_='swiper-slide').find_all('div',class_='artile_des').find('img')['src']# print(items)imgurl_list = []for i in items:imgurl = i.find('img')['src'] # img标签下的src属性# print(type(imgurl)) # <class 'str'># print(imgurl)imgurl_list.append(imgurl)start_save_img(imgurl_list) # 这里是对每一组套图做多线程# 下载图片
x = 1
def save_img(img_url):# global x # 全局变量# x +=1# img_url = img_url.split('=')[-1][1:-2].replace('jp','jpg') # 以=分割# print('正在下载'+'http:'+img_url)# img_content = requests.get('http:'+img_url).content# with open('doutu/%s.jpg'%x, 'wb')  as f:# urllib下的retrieve也可以下载#     f.write(img_content)global x # 全局变量x +=1print('正在下载:'+img_url)geshi = img_url.split('.')[-1]  # 因为图片格式不一样,所以切片,把链接中图片后缀获取到,用于下面拼接文件名img_content = requests.get(img_url).contentwith open('doutu/%s.%s'%(x,geshi), 'wb')  as f: # urllib下的retrieve也可以下载f.write(img_content)def start_save_img(imgurl_list):for i in imgurl_list:# print(i)th = threading.Thread(target=save_img,args=(i,)) # i后面加逗号表示args是一个元组# target是可调用对象,是一个函数名,线程启动后执行,th.start()th.join()# 主函数
def main():start_url = 'http://www.doutula.com/article/list/?page={}'for i in range(1,2):# print(start_url.format(i))start_html = get_html(start_url.format(i))get_img_html(start_html) # 获取内页图片的urlif __name__ == '__main__': # 判断文件入口start_time = time.time()main()end_time = time.time()print(start_time)print(end_time)print(end_time-start_time)

py3+requests+urllib+bs4+threading,爬取斗图图片相关推荐

  1. python简单爬取斗图图片(自学第十天)

    一.前期准备 (一).我们要爬取的页面 1,我们要爬取的网站为:https://www.doutula.com/photo/list/?page=1 2,获取请求头,来模拟浏览器浏览,不让网站直接就暴 ...

  2. 爬虫笔记——多线程爬取斗图网表情包(threading)

    爬虫笔记--多线程爬取斗图网表情包(threading) 网站观察 爬取框架 具体代码 斗图网网址:斗图网,这里以爬取最新套图为例. 网站观察 在网页翻页操作中可以看到网页是非动态加载的(page为页 ...

  3. python3爬虫——多线程爬取斗图网表情包

    本文用多线程生产者,消费者模式爬取斗图网的表情包,并下载保存到本地,get_page()函数负责获取页面的图片的url链接,downlod_img()函数通过图片url下载保存到本地文件夹中,开启多线 ...

  4. python多线程爬取斗图啦数据

    python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...

  5. python爬取斗图

    python使用requests模块请求网址,使用lxml模块中etree抓取数据,并使用time模块延时 爬取斗图啦如图所示: 将爬取到每页的数据保存在文件夹中 打开任意一个文件,将图片保存在内: ...

  6. 斗图斗不过小伙伴?python多线程爬取斗图网表情包,助你成为斗图帝!

    最近python基础课讲到了多线程,老师让交个多线程的实例练习.于是来试试多线程爬虫,正好复习一下mooc上自学的嵩天男神的爬虫知识.想法很美好,过程却很心酸,从早上开始写,每次出现各种奇怪问题,到现 ...

  7. 使用python爬取斗图网的图片

    使用python爬取斗图网的图片 以下是代码部分: # -*- coding: utf-8 -*- """ Created on Wed Apr 14 14:41:42 ...

  8. 多线程爬取斗图表情包

    和朋友在QQ上聊天感觉呀没有激情,突然,突发奇想,我写个小的爬虫 ,把表情包爬取下来随便挑,斗到他们吐血. 下面是爬取斗图的代码,代码可供参考 #encoding:utf8#模块import reim ...

  9. spider_爬取斗图啦所有表情包(图片保存)

    """爬取斗图吧里面的所有表情包 知识点总结: 一.使用requests库进行爬取,随机请求头(网站反爬措施少.挂个请求头足矣) 二.具体思路: 1.先爬取所有的图片ur ...

最新文章

  1. android运行过程简书,Android系统的启动流程
  2. MathType公式行距设置的方法
  3. 团队-团队编程项目作业名称-需求分析;
  4. storyboard 如何用代码调用
  5. 《程序员代码面试指南》第七章 位运算 在其他数都出现k 次的数组中找到只出现一次的数...
  6. 1.常用字符对象方法
  7. .Net Framwork概述
  8. 二叉树 中序遍历 python_LeetCode 105 树 从前序与中序遍历序列构造二叉树(Medium)
  9. 学工在线新闻搜索引擎0.1 beta版
  10. spring的@primary和@qualifier注解解决一个接口多个实现的注入问题
  11. java21天打卡day20-集合
  12. android p下载地址,Android P发布,4款国产手机可体验,附下载地址
  13. 局域网联机游戏找不到服务器,国庆想局域网联机,除了“吃鸡”,这些Steam游戏别错过...
  14. u盘linux 修复grub,Ubuntu 18.04与Win10双系统U盘安装后的GRUB2修复
  15. iOS面试题:Socket原理
  16. discuz模板文件说明
  17. 支付宝 ACQ.TRADE_NOT_EXIST 解决方案
  18. 云计算基础-基本概念(一)
  19. Mac Intellij IDEA 开发必备插件以及插件下载不成功方式:Cannot download
  20. ip-guard文档加密后无小锁标志

热门文章

  1. MVC 音乐商店 第 4 部分: 模型和数据访问
  2. 关于Deepin商店没有应用的解决办法
  3. 【微前端】591- 微前端在小米 CRM 系统的实践
  4. FPGA——FIFO
  5. sms4的S盒构造c实现
  6. 查询maven依赖的网址
  7. PaddleOCR数字仪表识别——1.字体背景删选
  8. 【51nod 1326】遥远的旅途【最短路】
  9. “三次握手,四次挥手”这么讲,保证你忘不了
  10. 一般人不清楚的JavaScript概念