【大数据学习番外篇之爬虫2】爬虫入门简单例子

news2024/11/26 1:37:17

目录

1. 图片爬取

2. 破解百度翻译

3. 豆瓣电影爬取

4. 肯德基餐厅位置爬取 


1. 图片爬取

通过以下代码我们可以看到图片已经爬取进入虚拟机里面。

# -*- coding: utf-8 -*-
import re
import requests
from urllib import error
from bs4 import BeautifulSoup
import os

file = ''
List = []

#爬取图片链接
def Find(url, A):
    global List
    print('正在检测图片总数,请稍等.....')
    s = 0
    try:
        Result = A.get(url, timeout=7, allow_redirects=False)
    except BaseException:
        print("error");
    else:
        result = Result.text
        pic_url = re.findall('data-src="(.*?)" data-type', result)  # 先利用正则表达式找到图片url
        s += len(pic_url)
        if len(pic_url) == 0:
            print("没读到")
        else:
            List.append(pic_url)
    return s

#下载图片
def dowmloadPicture():
    num = 1
    for each in List[0]:
        print('正在下载第' + str(num) + '张图片,图片地址:' + str(each))
        try:
            if each is not None:
                pic = requests.get(each, timeout=7)
            else:
                continue
        except BaseException:
            print('错误,当前图片无法下载')
            continue
        else:
            if len(pic.content) < 200:
                continue
            string = file + r'\\'  + str(num) + '.jpg'
            fp = open(string, 'wb')
            fp.write(pic.content)
            fp.close()
            num+=1


if __name__ == '__main__':  # 主函数入口
    headers = {
        'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
        'Connection': 'keep-alive',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',
        'Upgrade-Insecure-Requests': '1'
    }

    A = requests.Session()
    A.headers = headers

    url = 'https://mp.weixin.qq.com/s?__biz=MjM5NzU4OTQ0NQ==&mid=2650705400&idx=6&sn=5367e2f883a68cbb1a1157f0aa1057b2&chksm=bedd955289aa1c44c63a5e2e59805a24db3056dee709518884ceab738b8d306df1fd198af716&scene=27'

    total = Find(url, A)
    print('经过检测图片共有%d张' % (total))
    file = input('请建立一个存储图片的文件夹,输入文件夹名称即可: ')
    y = os.path.exists(file)
    if y == 1:
        print('该文件已存在,请重新输入')
        file = input('请建立一个存储图片的文件夹,)输入文件夹名称即可: ')
        os.mkdir(file)
    else:
        os.mkdir(file)
        

    dowmloadPicture()
    print('当前爬取结束,感谢使用')

2. 破解百度翻译

实现了翻译后的文本获取,保存本地json。

import requests
import json
if __name__ == "__main__":
    #1.指定url
    post_url = 'https://fanyi.baidu.com/sug'
    #2.进行UA伪装
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'

    }
    #3.post请求参数处理(同get请求一致)
    word = input('输入要翻译的单词:')
    data = {
        'kw':word
    }
    #4.请求发送
    response = requests.post(url=post_url,data=data,headers=headers)
    #5.获取响应数据:json()方法返回的是obj(如果确认响应数据是json类型的,才可以使用json())
    dic_obj = response.json()

    #持久化存储
    fileName = word+'.json'
    fp = open(fileName,'w',encoding='utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)
    print('over!!!')
    doc_obj=response.json()
    print(doc_obj)
    print('获取翻译结果成功!')

 

 

3. 豆瓣电影爬取
 

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
import requests
import json
if __name__ == "__main__":
    url = 'https://movie.douban.com/j/chart/top_list'
    param = {
        'type': '24',
        'interval_id': '100:90',
        'action':'',
        'start': '0',#从库中的第几部电影去取
        'limit': '20',#一次取出的个数
    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'

    }
    response = requests.get(url=url,params=param,headers=headers)

    list_data = response.json()

    fp = open('./douban.json','w',encoding='utf-8')
    json.dump(list_data,fp=fp,ensure_ascii=False)
    doc_obj=response.json()
    print(doc_obj)
    print('over!!!')

4. 肯德基餐厅位置爬取 

# 爬取肯德基餐厅位置信息
 
import requests;
 
# 判断是否是当前文件运行
if __name__ == '__main__':
        # 请求数据的url定义
        url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword';
        # 请求头定义
        headers = {
                "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 SLBrowser/8.0.0.4153 SLBChan/103"
        };
 
        # 获取用户输入的城市名
        cityName = input("请输入查询的城市名称:")
 
        # 请求参数定义
        params = {
                "cname":"",
                "pid":"",
                "keyword":cityName,
                "pageIndex":1,
                "pageSize":10
        }
        # 发起第一次post请求,获取表数据量
        response = requests.post(url=url,data=params,headers=headers);
 
        json_obj = response.json();
 
        rowCount = json_obj.get("Table")[0].get("rowcount");
 
        # 发起第二次post请求,获取数据
        params["pageSize"] = rowCount;
 
        response = requests.post(url=url, data=params, headers=headers);
 
        json_obj = response.json();
 
        datas = json_obj["Table1"];
 
        # 文件内容 标题定义
        fileContent = "省份\t城市名\t商店名\t地址\t特殊权限\n"
 
        # 遍历提取数据,进行格式化
        for item in datas:
                t_obj = item;
                fileContent += t_obj.get("provinceName") + "\t";
                fileContent += t_obj.get("cityName") + "\t";
                fileContent += t_obj.get("storeName") + "\t";
                fileContent += t_obj.get("addressDetail") + "\t";
                pro_value = t_obj.get("pro")
                if pro_value is not None:
                    fileContent += str(pro_value) + "\n"
                else:
                    fileContent += "\n"
                
        doc_obj=response.json()
        print(doc_obj)
        # 写到文件中保存
        file = open("./KenDeiJi_datas.txt","w",encoding="utf-8");
        file.write(fileContent);
        file.close();

关注博主下篇更精彩

一键三连!!!

一键三连!!!

一键三连!!!
感谢一键三连!!!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fmoc固相肽:116783-35-8,Fmoc-Thr(Ac3GalNAcα)-OH,进行总结说明

试剂基团反应特点&#xff08;Reagent group reaction characteristics&#xff09;&#xff1a; Fmoc-Thr(Ac3GalNAcα)-OH&#xff0c;该构建块中的O-糖苷键和O-乙酰基保护对哌啶和TFA[1]都是稳定的&#xff0c;使其与Fmoc固相肽合成中的标准方案完全兼容。乙酰基保护基的去除…

了解set

了解set 1. set的介绍2. set的使用1. Member functions2.set的迭代器3. set的容量4.set修改操作4.1 insert4.2 erase、swap和clear4.3 emplace 5. observers(了解)6.Operations(了解) 3.set有关的题目 1. set的介绍 C中的set是一种关联式容器&#xff0c;它能够存储同一数据类型…

Airtest自动化测试工具实战演练

一开始知道Airtest大概是在年初的时候&#xff0c;当时&#xff0c;看了一下官方的文档&#xff0c;大概是类似Sikuli的一个工具&#xff0c;主要用来做游戏自动化的&#xff0c;通过截图的方式用来解决游戏自动化测试的难题。最近&#xff0c;移动端测试的同事尝试用它的poco库…

融合空间与视觉,揭示信息之美——GIS与可视化的奇妙结合

近年来&#xff0c;随着信息技术的快速发展&#xff0c;地理信息系统&#xff08;GIS&#xff09;和可视化技术在各行各业中的应用越来越广泛。作为一种集成空间数据管理、分析和可视化展示的强大工具&#xff0c;GIS为我们带来了全新的视角和洞察力&#xff0c;它以其直观、生…

学习笔记:吴恩达ChatGPT提示工程

以下为个人笔记&#xff0c;原课程网址Short Courses | Learn Generative AI from DeepLearning.AI 01 Introduction 1.1 基础LLM 输入 从前有一只独角兽&#xff0c;输出 它和其他独角兽朋友一起住在森林里输入 法国的首都在哪&#xff1f;输出 法国的首都在哪&#xf…

arm32位应用兼容arm64位记录

目录 背景 兼容64位步骤 1.配置ndk支持arm64 2.进行build构建 3.构建完之后&#xff0c;进行apk包的分析 4.比较lib/armeabi-v7a和lib/arm64-v8a两个文件夹下的so库文件 5.确定缺少的so库文件属于哪些三方依赖 6.确定完所属依赖后&#xff0c;要么升级依赖、要么直接引入…

普通Java工程师如何成长为一名优秀的架构师?

导言 什么是架构师&#xff1f;对于程序员来说&#xff0c;聊架构是一个永不过时的话题。实际上&#xff0c;每一家公司都有自己对架构师不同的定位&#xff0c;因为不同的公司&#xff0c;所处的阶段、业务模式以及应用场景都不一样&#xff0c;因此对架构师的要求不一样&…

R -- loess函数

文章目录 brief:Example代码实例用在时序数据上 brief: 通常我们使用最小二乘回归&#xff08;OLS&#xff09;去找到一条直线来最佳地拟合数据点&#xff0c;就像下面那样。 但是我们会遇到下面这种数据分布,我们应该怎样处理呢&#xff1f;广义线性回归 或者 Loess回归进行…

图论 (Java) 从入门到入土 /第一部分 图的基础-图的表示/

零.前言 图&#xff0c;是一种比较复杂的数据结构。和树的一个节点只和上层一个节点相连不同&#xff0c;在图中&#xff0c;任意两个节点都可能相连&#xff0c;且可能具有方向性&#xff0c;并且节点的边具有权重&#xff0c;因此&#xff0c;图被用于描述各种复杂的数据对象…

深入理解Qt定时器:QTimer的魅力与挑战

深入理解Qt定时器&#xff1a;QTimer的魅力与挑战 1. 引言&#xff08;Introduction&#xff09; QTimer的基本概念&#xff08;Basic Concepts of QTimer&#xff09; 2. QTimer的基本使用&#xff08;Basic Usage of QTimer&#xff09;2.1 创建和启动QTimer&#xff08;Crea…

【软件测试】日志第五天

系软件开发日志 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;软件测试 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系软件开发日志前言web自动化…

6月编程排行榜出炉,Python还是第一吗?

除了自己的薪水&#xff0c;程序员每个月最关注的就要数编程排行榜啦~快跟着播妞一起看看最新编程排行情况&#xff1a; Tiobe编程排行前15名 历年排行变化趋势图 详细榜单可参考官网&#xff1a;https://www.tiobe.com/tiobe-index/ 本月排行看点&#xff1a;没有意外&#…

又一经典之作开源,腾讯云架构师珍藏版:“redis深度笔记”

前言 作为这个时代码代码的秃头人员&#xff0c;对Redis肯定是不陌生的&#xff0c;如果连Redis都没用过&#xff0c;还真不好意思出去面试&#xff0c;指不定被面试官吊打多少次。 毕竟现在互联网公司和一些创业公司都要用到Redis&#xff0c;像亚马逊、谷歌、阿里、腾讯都要…

太赞了!阿里技术团队《Java 面试官手册》突击版免费对外开放!

现在已经不是几年前了&#xff0c;可能路边的大爷都知道学计算机挣钱了&#xff0c; 突然想起一个段子&#xff0c;就是当路边的大爷都开始进场买股票时&#xff0c;说明市场已经很危险了。不过大家大可放心&#xff0c;大爷永远无法进场搞计算机&#xff0c;大家放心卷。因为公…

帆软10移动端适配过程记录

背景 最近项目中嵌入的帆软报表在移动端进行适配&#xff0c;支持手机端展示&#xff0c;版本升级在前期&#xff08;帆软FineReport之版本升级&#xff09;有过介绍&#xff0c;本期主要记录适配过程出现的问题及处理方案。 异常处理 1、请求找不到js文件 问题描述 在手机…

活动笔记丨物业行业人效提升与灵活用工新路径

近日&#xff0c;盖雅工场成功举办物业行业人效提升专场交流&#xff0c;来自广深地区央企和民营的领先物业企业和现场服务业的多位代表齐聚深圳招商积余大厦&#xff0c;共同研讨行业人效提升的挑战和实践。 本次闭门交流会聚焦于人效提升&#xff0c;讨论话题包括各自企业在人…

[C语言实现]数据结构——手撕顺序栈之我出生就会写一个栈

&#x1f970;作者: FlashRider &#x1f30f;专栏: 数据结构 目录 栈的前置知识 1.什么是栈&#xff1f; 2.生活中哪些地方有栈的影子&#xff1f; 顺序表实现栈 1.为什么通常采用顺序表实现栈&#xff1f; 2.栈的实现 栈的前置知识 1.什么是栈&#xff1f; 栈&#xf…

spring实例化bean属性填充

实例化bean之后要执行属性填充&#xff0c;也就是serviceA注入了servcieB&#xff0c;实例化servcieA时要通过populateBean先实例化serviceB. 也就是最终要执行serviceB的getBean 只是字段注入的流程 关键的两个Processor AutowiredAnnotationBeanPostProcessor 处理Autowire…

Databend 开源周报第 96 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 虚拟列 查询 J…

Angular与PDF之四: 反思代码与模板的复用

在我们前面关于Angular与PDF的几篇博客中分别讲了如何在在如何在客户端渲染PDF(Angular与PDF之一&#xff1a;如何在客户端渲染PDF_angular pdf_KenkoTech的博客-CSDN博客) 和预览&#xff08;Angular 与PDF之二&#xff1a;打印预览的实现_angular pdf预览_KenkoTech的博客-CS…