前言

线程可以高效的调用cpu,实现cpu利用的最大化,非常快速的帮助我们爬取想要的数据

一、线程的特点

线程的含义:线程相当于 一个公司的员工,也相当于 一个应用软件可以使用多个功能一样
线程的方法:Class MyThread(Thread):继承Thread父类
new Mythread()创建对象 t.start()开启线程 Thread父类的方法def run(self):
是线程要完成的任务

二、使用步骤

1.线程池

ThreadPoolexecutor(count)这个就是线程池对象 count代表在线程内的数量
我们爬取数据都是用线程池 ,线程池相当于多个线程构成一块

 with ThreadPoolExecutor(50) as t:for i in range(1,200):data = {'limit': '20','current': str(i),'pubDateStartTime': '','pubDateEndTime': '','prodPcatid': '','prodCatid': '','prodName': ''}t.submit(download_one_page(data))#submit第一个是参数 正是线程池要干的事# t.submit(download_one_page,第二个参数) 第二个参数是指 传入 download_one_page中

2.引入库

代码如下(示例):

import requests
from lxml import etree
from concurrent.futures import ThreadPoolExecutor
import csv

3.整块代码

import requests
from lxml import etree
from concurrent.futures import ThreadPoolExecutor
import csv
headers = {"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0"}
data = {'limit':'20',
'current':'1',
'pubDateStartTime':'',
'pubDateEndTime':'',
'prodPcatid':'',
'prodCatid':'',
'prodName':''}
datalists = []
f = open("./北京菜价数据1.csv",mode="w",encoding="utf-8")
f = csv.writer(f)
def download_one_page(data):url = "http://www.xinfadi.com.cn/getPriceData.html"resp = requests.post(url=url,headers=headers,data=data) #可以用post方式提交表单 访问的到list = resp.json()list = list['list']# 获取数据列表print(len(list))  # 打印数据长度for i in range(len(list)):datalist = []id = list[i]['id']  # 菜的idname = list[i]['prodName']  # 菜名typeone = list[i]['prodCat']  # 一级分类place = list[i]['place']  # 位置lowPrice = list[i]['lowPrice']  # 最低价highPrice = list[i]['highPrice']  # 最高价avgPrice = list[i]['avgPrice']  # 平均价格datalist.append(id)datalist.append(name)datalist.append(typeone)datalist.append(place)datalist.append(lowPrice)datalist.append(highPrice)datalist.append(avgPrice)f.writerow(datalist)#     datalists.append(datalist)# return datalists
def main():pass
if __name__ == '__main__':#低效率事件"""for i in range(1,14870):data = {'limit': '20','current': str(i),'pubDateStartTime': '','pubDateEndTime': '','prodPcatid': '','prodCatid': '','prodName': ''}datalists = download_one_page(data)"""with ThreadPoolExecutor(50) as t:for i in range(1,200):data = {'limit': '20','current': str(i),'pubDateStartTime': '','pubDateEndTime': '','prodPcatid': '','prodCatid': '','prodName': ''}t.submit(download_one_page(data))#submit第一个是参数 正是线程池要干的事# t.submit(download_one_page,第二个参数) 第二个参数是指 传入 download_one_page中f.close()print("执行完毕!")

总结

线程池的方法比较重要 submit(要执行的任务)

python实现用线程爬虫 快速高效爬数据相关推荐

  1. python -又一次爬虫练习(爬取LOL所有的英雄头像)

    python -又一次爬虫练习(爬取LOL所有的英雄头像) 目标网站:https://lol.qq.com/data/info-heros.shtml#Navi 一开始我尝试用requests来get ...

  2. Python教程:网络爬虫快速入门实战解析

    建议: 请在电脑的陪同下,阅读本文.本文以实战为主,阅读过程如稍有不适,还望多加练习. 网络爬虫简介 网络爬虫,也叫网络蜘蛛(Web Spider).它根据网页地址(URL)爬取网页内容,而网页地址( ...

  3. python repair修复功能_通用高效的数据修复方法:Row level repair

    导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用.其中,Apache Cassandra 是最广泛使用的数据库之一.对于 Cassandra 的优化是大家研究的热点,而 ...

  4. 在当当买了python怎么下载源代码-爬虫实战:爬取当当网所有 Python 书籍

    来源:公众号-极客猴 出处: 本文主要讲解如何利用urllib.re.BeautifulSoup 这几个库去实战,爬取当当网所有 Python 书籍. 1 确定爬取目标 任何网站皆可爬取,就看你要不要 ...

  5. python view函数_Python爬虫实例(二)——爬取新馆疫情每日新增人数

    python是世界上最美的语言. 大家好,我是Henry! 疫情以来,相信大家每天都关注着疫情的实时动态,许多网站上也post了疫情的相关资料. 百香园 百度 各个网站都会统计每日新增,刚学了Matp ...

  6. 百度小程序html解析图片过大_如何快速高效爬取谷歌百度必应的图片

    导读 有些时候我们需要构建一个自己的数据集来训练模型.但是,却苦于没有大量的数据,此时就需要去谷歌.百度.必应搜索引擎上去爬取一些图片作为自己的数据集. 很自然的,我们就会想到写一个爬虫的程序去爬取图 ...

  7. python监视电脑桌面_Python爬虫练习:爬取高清壁纸,让你电脑桌面一天一换

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 基本环境配置 python 3.6 pycharm requests 在这里插入图片描述 在 ...

  8. python语音导航_python爬虫,狂爬各种导航网站并分类

    [Python] 纯文本查看 复制代码#coding=utf-8 ''' Created on 2018-3-27 @author: haoning ''' import scrapy import ...

  9. python如何读取tfrecord_tensorflow学习笔记——高效读取数据的方法(TFRecord)

    关于TensorFlow读取数据,官网给出了三种方法: 供给数据(Feeding):在TensorFlow程序运行的每一步,让python代码来供给数据. 从文件读取数据:在TensorFlow图的起 ...

最新文章

  1. 构建一个react项目_您想要了解更多有关React的内容吗? 让我们构建一个游戏,然后玩。...
  2. -9 逆序输出一个整数的各位数字_计算机基础知识: 信息数字化
  3. 重游java(猜数和逛街)
  4. 基于深度学习的目标检测方法综述
  5. java实训手册_java实训项目用户手册
  6. CentOS7.X中使用yum安装nginx完全教程
  7. Linux主要shell命令详解
  8. 第一百二十四期:2019年臭名昭著的勒索软件,网络钓鱼和僵尸网络
  9. eclipse java ui,Eclipse Forms筹划漂亮UI之高级组件[Java编程]
  10. Tensorflow 循环神经网络 文本情感分析概述02
  11. 深入浅出SharePoint2010——请假系统无代码篇之表单设计
  12. paip.提升效率----几款任务栏软件
  13. 离散数学 (II) 习题 2
  14. WAP网站制作(WAP网站建设)全攻略教程一
  15. ZXing条码扫描----竖屏解决方案
  16. 三维浮雕软件 linux,立体浮雕工具下载 Type3(立体浮雕软件) v4.6.0.0 免费安装版 下载-脚本之家...
  17. 49个excel常用技巧(三)
  18. 索尼a6000拍月亮_如何给月亮拍好照片
  19. 微信小程序开发者工具的使用
  20. 深度学习 计算机视觉中的注意力机制

热门文章

  1. android8 测试,Android 8.0 Oreo 国内可用测试平台上线
  2. tensor如何实现转置_PyTorch中的傅立叶卷积:通过FFT有效计算大核卷积的数学原理和代码实现...
  3. ospf 环回口的路由条目_华为OSPF基础实验
  4. multisim秒信号发生器_频谱中射频干扰信号流化、分析与回放
  5. erdas裁剪影像_运用ERDAS裁剪影像
  6. matlab拟合二元函数图,求助大神。。matlab拟合二元函数,求解系数。函数形式已知...
  7. oracle_Grid Infrastructure 启动的五大问题
  8. sql server management studio快捷键
  9. ipv6远程连接mysql_如何利用IPv6进行远程桌面连接
  10. 工具箱锁打不开了怎么办_木门门锁坏了怎么办?维修小技巧在手不发愁