当前位置: 首页 > news >正文

Python 爬虫练习项目——异步加载爬取

项目代码

from bs4 import BeautifulSoup
import requests
url_prefix = 'https://knewone.com/discover?page='
infos = []

# 获取单个页面数据
def getAPage(url,data = None):
    web_data = requests.get(url)
    soup = BeautifulSoup(web_data.text,'lxml')
    # print(soup)

    images = soup.select('header > a > img')
    titles = soup.select('section > h4 > a')
    links = soup.select('a.cover-inner')
    likes = soup.select('span.fanciers_count')

    if data == None:
        for image,title,link,like in zip(images,titles,links,likes):
            data = {
                'image':image.get('src'),
                'title':title.get_text(),
                'link':'https://knewone.com' + link.get('href'),
                'like':int(like.get_text())
            }
            print(data)

            infos.append(data)
# 获取多个加载的数据
def getMorePages(start,end):
    for url_suffix in range(start,end):
        getAPage(url_prefix + str(url_suffix))
        print('---------------已经获取{}条数据---------------'.format(len(infos)), sep='\n')
# 获取点赞排名前几的数据
def getInfosByLikes(order,infos =infos):
    infos = sorted(infos,key= lambda info:info['like'],reverse = True)
    for info in infos[:order]:
        print(info['like'],info['title'],info['image'],info['link'])

getMorePages(1,4)


getInfosByLikes(5)

项目特点:

【转载】同步加载、异步加载、延迟加载

爬取的网站链接

KnewOne

需要下载代码的可以到我的GitHub上下载 https://github.com/FightingBob/-Web-Crawler-training  如果觉得可以,请给我颗star鼓励一下,谢谢!

转载于:https://www.cnblogs.com/littlebob/p/9199375.html

相关文章:

  • 【对讲机的那点事】玩对讲机你知道对讲机通讯距离的计算方法吗?
  • python进程池multiprocessing.Pool和线程池multiprocessing.dummy.Pool实例
  • CF 612C. Replace To Make Regular Bracket Sequence【括号匹配】
  • 编程遇到英语必备
  • vuex的安装和入门demo
  • jQuery缩小放大触发事件
  • js进阶 11-13 jquery如何包裹元素和去除元素外的包裹
  • Linux 守护进程
  • 甲骨文解散Java Mission Control团队事件新进展
  • 内部类访问局部变量为什么要用final修饰
  • Java高级编程——选redis还是memcache,源码怎么说?
  • Python学习——文件操作和异常处理
  • radhat6.6上安装oracle12c RAC (三)
  • 复制cp 近半年【181天:2018-01-01至20180627 这段时间】图片到upoad目录下
  • javascript 中数组的创建 添加 与将数组转换成字符串 页面三种提交请求的方式...
  • 【附node操作实例】redis简明入门系列—字符串类型
  • docker-consul
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • extjs4学习之配置
  • GitUp, 你不可错过的秀外慧中的git工具
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • leetcode46 Permutation 排列组合
  • spring学习第二天
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 聊聊flink的BlobWriter
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 用element的upload组件实现多图片上传和压缩
  • 最近的计划
  • 容器镜像
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​configparser --- 配置文件解析器​
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #Lua:Lua调用C++生成的DLL库
  • (1)(1.13) SiK无线电高级配置(六)
  • (2)STL算法之元素计数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (JS基础)String 类型
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (论文阅读11/100)Fast R-CNN
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)创业的注意事项
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET gRPC 和RESTful简单对比
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • ??myeclipse+tomcat
  • @Autowired标签与 @Resource标签 的区别
  • @ModelAttribute注解使用
  • [ C++ ] template 模板进阶 (特化,分离编译)
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [acm算法学习] 后缀数组SA