Pyhton爬虫多线程提升数据下载的性能优化

很幸运地上了两次Tony老师关于python爬虫的课(收获巨多),在这里我对第一次课做一下知识总结:
1.什么是爬虫?
自动从网络上进行数据采集的程序

  • 一个网络蜘蛛就是一种机器人,或者软件代理。大体上,它从一组要访问的URL链接开始,可以称这些URL为种子。爬虫访问这些链接,它辨认出这些页面的所有超链接,然后添加到这个URL列表,可以称作检索前沿。这些URL按照一定的策略反复访问
  • 很多站点,尤其是搜索引擎,都使用爬虫提供最新的数据,它主要用于提供它访问过页面的一个副本,然后,搜索引擎就可以对得到的页面进行索引,以提供快速的访问。
  • 蜘蛛也可以在web上用来自动执行一些任务,例如检查链接,确认html代码;也可以用来抓取网页上某种特定类型信息,例如抓取电子邮件地址(通常用于垃圾邮件)。

2.为什么有爬虫?
场景:
(1).新浪新闻报道的新闻从哪里来的?
①新闻肯定最开始产生于记者,记者将新闻发布到某些平台
其他平台爬取并使用该平台记者所写的新闻,相当于一个人写了文章,另一个人推送文章
(2.)搜索引擎百度为什么可以承载属于其他网站的信息?
①百度很大一部分工作都是在运行自己的爬虫,采集其他网页并存储下来,等待搜索
②通过爬虫来不断补充自己的知识链,实时更新搜索的结果,内容
(3)电商平台
拼多多采集其他电商平台商品的价格浮动,处理分析
(4)大量数据样本需求
大数据的时代数据分析需要大量的数据样本,采集网络数据

3.在百度上搜索淘宝到得到淘宝的网站信息

  • 百度在万维网上爬取了淘宝网的信息,存储在自己的服务器里面,当我们搜索淘宝的时候,是如何从服务器的某个位置准确的把

这些信息找出来的呢?
DNS协议:解析域名:

  • DNS协议是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
  • DNS允许终端用户设备将给定的人类可读URL转换为网络可以理解的机器可用IP地址。

尽管IP地址能够唯一地标记网络上的计算机,但IP地址是一长串数字,不直观,而且用户记忆十分不方便,于是人们又发明了另一套字符型的地址方案,即所谓的域名地址。IP地址和域名是一一对应的,这份域名地址的信息存放在一个叫域名服务器(DNS,Domain name server)的主机内,使用者只需了解易记的域名地址,其对应转换工作就留给了域名服务器。域名服务器就是提供IP地址和域名之间的转换服务的服务器。——摘自《百度百科》

淘宝的域名->淘宝的ip地址->用户通过ip地址请求服务器->服务器返还请求的淘宝信息->浏览器解析数据,显示界面

对真实的url路径进行动态的修改

  • 锁定抓取的目标,获得目标页面的url

    • 在堆糖网上搜索杨幂我们可以得到域名:
      https://www.duitang.com/search/?kw=杨幂&type=feed
      在我们的pycharm里面显示为:
      https://www.duitang.com/search/?kw=%E6%9D%A8%E5%B9%82&type=feed
      (中间的文字被替换成的字符串设计URL编码)
    • 右键检查查看网页源代码
      往下滑动网页发现:我们每滑动一段就会增加一个条目:
      (网页的动态加载/局部刷新)
      点击其中的一个条目可以看到这个部分的url:
  • 修改url
    • 删除不必要的成分
    • 点开这个链接我们可以看到下面这个页面,复制页面的内容,在浏览器查找一个JSON解析网站,粘贴内容我们观察一下:
      这里显示的就是我们的局部页面的数据:total:3600 next_start:48
      说明该页面一共将显示3600张图片,下一个部分将从第48张开始,即每个部分显示48张图片
  • 修改url,让每次加载从0开始,最多加载1000张

    再次访问链接,将新的网页上的数据内容进行解析可以看到变化:
    这次是每次加载100张,一共有3600张
  • 利用字符串进行数据查找,并提取数据
    在pycharm里面要用到第三方的请求库requests,在cmd里面用pip指令安装:pip install requests
    第一步请求获取服务器返回的数据

import requests
""" 利用字符串的格式化,每次访问不同的链接,从index开始请求图片数据用get请求数据,如上图网页已经做出要求最后的数据都存储在str_get列表里面
"""
URL="https://www.duitang.com/napi/blog/list/by_search/?kw=%E6%9D%A8%E5%B9%82&start={}&limit=3600"
str_get=[]
for index in range(0,3600,100):URL.format(index)s=requests.get(URL).content.decode("utf-8")str_get.append(s)

第二部解析数据:提取需要的内容(图片的链接)
将得到的url存储在url_all列表里

left_part='"https:'
right_part= '"'
url_all=[]
for s in str_get:ip_get = []start=0while s.find(left_part, start)!=-1:l = s.find(left_part, start)r=s.find(right_part,l+1)url=s[l+1:r]url_get.append(url)start=rprint(url)url_all.extend(url_get)
  • 存储数据
    从得到的图片链接获得图片
numbers=0
for url in ip_all:numbers+=1data=requests.get(url)path="image/"+str(numbers)+".jpg"with open(path,'wb+') as file:file.write(data.content)

然后我们可以在左侧看到存储的图片了

到此我们已经成功爬取到了杨幂的图片了

Python爬虫多线程提升数据下载的性能优化相关推荐

  1. python爬虫-多线程小说批量下载

    # 增加了:1.使面向对象化 2.加入了异常判断,防止程序因报错中断 3.检查txt文件是否存在,如存在,跳过并下载下一个文件 # 增加了:多线程,可同时download多个文件 2018.1.11i ...

  2. [Python爬虫] 六、数据提取之XPath与lxml类库

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

  3. python Chrome + selenium自动化测试与python爬虫获取网页数据

    一.使用Python+selenium+Chrome 报错: selenium.common.exceptions.SessionNotCreatedException: Message: sessi ...

  4. [Python爬虫] 三、数据抓取之Requests HTTP 库

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 一.urllib 模块 所谓网页抓取,就是把URL ...

  5. [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler

    往期内容提要: [Python爬虫] 一.爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二.爬虫原理之定义.分类.流程与编码格式 [Python爬虫] 三.数据抓取之Request ...

  6. Python爬虫—Scrapy框架—Win10下载安装

    Python爬虫-Scrapy框架-Win10下载安装 1. 下载wheel 2.下载twisted 3. 下载pywin32 4. 下载安装Scrapy 5. 创建一个scrapy项目 6. fir ...

  7. Python爬虫 | 对广州市政府数据统一开放平台数据的爬取

    Python爬虫 | 对广州市政府数据统一开放平台数据的爬取 简单爬虫 网页分析 爬虫代码 简单爬虫 本次爬虫演示的是对 广州市政府数据统一开放平台 数据的爬取 网页分析 我们先到url=' http ...

  8. Python数据分析挖掘案例:Python爬虫助力疫情数据追踪

    通过学习Python数据分析挖掘案例,可以掌握通过Python爬虫获取的数据进行处理以及可视化分析的主要方法和技能,并为后续相关课程学习及将来从事数据分析工作奠定基础. 新冠病毒疫情在武汉突然爆发,确 ...

  9. 创新实训-python爬虫多线程|解决中文乱码问题|卡片向上浮动效果|图文切换

    创新实训-python爬虫多线程|乱码问题|前端样式重新修改 考完毛概,把上周的工作总结一下.爬虫在第一周的时候只爬了一个就业指导这一个模块,这一次又加了招聘服务模块,所以就用了两个线程.前端首页一开 ...

最新文章

  1. Android中BaseAdapter使用总结(imooc笔记)
  2. 利用shell脚本来监控linux系统的内存
  3. 拆解飞机黑匣子,看看内部构造、PCB及芯片
  4. .NET 开源项目 StreamJsonRpc 介绍[上篇]
  5. 链表简单实现(增删查改)
  6. 中芯国际A股最终确定发行价27.46元 发行规模超50亿
  7. Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
  8. 【读书】《当我跑步时,我谈些什么》书评:我跑步时,只是跑着
  9. OpenJDK8:只有x86和sparcv9才能出32位的版本
  10. office2019 图目录_【设计图文】电磁阀体中心孔组合机床、机床总体工位布置和钻、扩、铰工位液压系统设计(有cad图)...
  11. python绘制风玫瑰图_python绘制风向玫瑰图和污染物玫瑰图
  12. TF-IDF入门与实例
  13. 大数据时代个人信息保护的困境与思考
  14. 读书笔记:《我们身在何方?》
  15. 信用卡刷卡消费背后的故事
  16. think in java学习笔记
  17. js 关键技术集合
  18. 为什么宝宝做错事被骂哭后,还要求抱抱?
  19. 伯禹公益AI《动手学深度学习PyTorch版》Task 05 学习笔记
  20. 达内Web前端开发视频教程

热门文章

  1. ASP网上贴吧系统的设计与实现
  2. 爱情智慧:男友爱上了“坏女人”,我是不是也要学坏?
  3. 赵宏田:用户画像场景与技术实现
  4. 华为电脑linux指纹,华为朱臣才:MateBook指纹解锁仅需一触
  5. 拼多多商家遇到投诉,如何解决?
  6. 区块链正在塑造医疗保健生态系统
  7. 介绍在全志A40i Ubuntu系统上定制文件系统的操作过程
  8. 来点干货!3招Python 处理CSV、JSON和XML数据的简便方法!
  9. 梦幻西游 Mac版游戏特色
  10. 【DQ冰淇淋】—— Babylon 冰淇淋三维互动营销项目总结