爬虫基础一(持续更新)

这篇具有很好参考价值的文章主要介绍了爬虫基础一(持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

爬虫概念:

通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程

分类:

1,通用爬虫:抓取一整张页面数据

2,聚焦爬虫:抓取页面中的局部内容

3,增量式爬虫:只会抓取网站中最新更新出来的数据

反爬协议robots.txt协议

http协议:

服务器与客户端进行数据交互的一种形式

User-Agent:请求载体的身份标识

Connection:请求完毕是断开还是保持连接

Content-Type: 服务器响应回客户端的数据类型

https协议:证书认证加密,安全的超文本传输协议

1,requests模块:

作用:模拟浏览器发请求

流程:1,指定url 2,发起请求 3,获取响应数据 4,持久化存储

1.1爬取搜狗首页:

import requests
if __name__ == '__main__':
    url='https://www.sogou.com/'
    response=requests.get(url=url)
    page_text=response.text#返回字符串形式的响应数据
    print(page_text)
    with open('./sougou.html','w',encoding='utf-8') as fp:
        fp.write(page_text)
    print('爬取数据结束!')

爬虫基础一(持续更新),爬虫

1.2网页采集器

User-Agent:请求载体的身份标识

UA伪装:让爬虫对应的请求载体身份标识伪装成某一款浏览器

import requests
if __name__ == '__main__':
    #UA伪装:将对应的UA封装到一个字典里
    headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2669.400 QQBrowser/9.6.10990.400'
    }
    url='https://www.sogou.com/sie?hdq=AQxRG-0000&'
    #处理URL参数分装到字典里
    kw=input('enter a word:')
    param={
        'query':kw
    }
#对指定URL发起的请求对应的url是携带参数的请求过程中处理了参数
    response=requests.get(url=url,params=param,headers=headers)
    page_text=response.text#返回字符串形式的响应数据
    fileName=kw+'.html'

    with open(fileName,'w',encoding='utf-8') as fp:
        fp.write(page_text)
    print(fileName,'保存成功!!')

爬虫基础一(持续更新),爬虫爬虫基础一(持续更新),爬虫

1.3破解百度翻译

打开百度翻译官网,右键检查

爬虫基础一(持续更新),爬虫

爬虫基础一(持续更新),爬虫

发出的是一个post请求(携带参数),响应数据是一组json数据 

import requests
import json#导入模块
if __name__ == '__main__':
    post_url='https://fanyi.baidu.com/sug'#1,指定url
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2669.400 QQBrowser/9.6.10990.400'
    }#经行UA伪装
    #3,post请求参数处理(与get类似)
    word=input('enter a word:')
    data={
        'kw':word
    }
    #4,发送请求
    response=requests.post(url=post_url,data=data,headers=headers)
    #5,获取响应数据:json()方法返回的是obj(提前确定是json类型)
    dic_obj=response.json()
    #持久化存储
    fileName=word+'.json'
    fp=open(fileName,'w',encoding='utf-8')
    json.dump(dic_obj,fp=fp,ensure_ascii=False)#中文不可以用ASCII码
    print('over!!')

效果:

爬虫基础一(持续更新),爬虫 

1.4,豆瓣电影爬取

爬虫基础一(持续更新),爬虫 

文件类型为json,地址中有参数,获取方式为get

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':'3',#第一个电影
        'limit':'20'#数量

    }
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.2669.400 QQBrowser/9.6.10990.400'
    }
    response=requests.get(url=url,params=param,headers=headers)#请求
    list_data=response.json()#json类型
    fp=open('./douban.json','w',encoding='utf-8')#生成文件
    json.dump(list_data,fp=fp,ensure_ascii=False)
    print('over!!!')

 1.5爬取肯德基餐厅

要求:统计各个城市共有多少家肯德基餐厅,并打印门店信息

请求方式为post,文本类型(content-Type):text

爬虫基础一(持续更新),爬虫

参数:

 爬虫基础一(持续更新),爬虫


import requests

url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
# UA伪装
header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36'
}
word = input("请输入地址: ")
numbers = 1
# 页数
number_pages = 0
# 第一次检测页数
state = True
while numbers != 0:
    number_pages += 1
    data = {
        'cname': '',
        'pid': '',
        'keyword': word,
        'pageIndex': number_pages,
        'pageSize': '10',
    }
    # 请求发送
    response = requests.post(url=url, data=data, headers=header)
    text = response.text
    numbers -= 1
    # 计算页数,因为只需要一次即可
    if state:
        # 将列表text转化为字典
        dictionary = eval(text)
        # 获取第一段Table的页数
        rowcount = dictionary['Table']
        # 将这个列表中的字典赋给dicts
        dicts = rowcount[0]
        # 查询rowcount所指的页数
        numbers = dicts['rowcount']
        if numbers == 0:
            print("抱歉,您所输入的地址没有肯德基餐厅")
        else:
            print(f"{word}一共有{numbers}家肯德基餐厅")
        if numbers % 10 == 0:
            numbers = numbers // 10#整除
        else:
            numbers = numbers // 10  # 不加一是因为已经检查过一次了
        state = False

    print(text)

爬虫基础一(持续更新),爬虫文章来源地址https://www.toymoban.com/news/detail-761193.html

到了这里,关于爬虫基础一(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算基础(持续更新)

    第1关:云计算定义 云计算首次正式出现在商业领域是在哪一年? D. 2006 下面哪些属于云计算的特征? A. 广泛的网路接入 B. 可测量的服务 C. 弹性服务 D. 资源池化 第2关:云计算的基本原理 分布式计算是将一个任务细分为多个任务,每个任务由一台或多台计算机来完成 正确

    2024年04月11日
    浏览(35)
  • JAVA 基础算法汇总(持续更新)

    目录 前言 一、查找算法 1.顺序查找(线性查找) 2.二分查找 二、排序算法 1.冒泡排序 2.直接选择排序 3.插入排序 4.直接插入排序 · · · 三、链表的基础操作 1.链表的创建 2.移除链表元素 3.设计链表 4.ListNode temp = head 与  ListNode dumpyNode = new ListNode(0) 的区别 四、树的基础操作

    2024年02月04日
    浏览(41)
  • 微信小程序-文件基础(持续更新)

    所处位置:小程序项目,根目录下 作用:存放,构成小程序的各个页面的代码文件,如下图pages文件中存放了index,logs,main子文件夹。   补充知识点: 根目录 :起源于早期将Windows文件的分级管理比喻成大树形状,驱动器一级文件夹就相当于大树的根部,故称根目录。下级

    2024年01月17日
    浏览(37)
  • Git--基础学习--面向企业--持续更新

    本地数据管理: 工作区 :(Working Directory)电脑本地的目录 暂存区 :(Staging Area)临时存储区域,保存即将push到仓的文件。 本地仓库 :(Local Repository)包含完整的项目历史和原始数据,git存储版本信息和代码的主要位置。 文件状态: Untrack 未跟踪 Unmodifiled 未修改 Modif

    2024年04月28日
    浏览(33)
  • 【自用】【持续更新】LaTeX常用基础语法大全

    居中 排序列表 加粗 A 、 A 、 我们 、 我们 、我们 textbf{A}、boldsymbol{A}、boldsymbol{我们}、textbf{我们}、我们 A 、 A 、 我们 、 我们 、我们 斜体 我们 、 我们 textit{我们}、it{我们} 我们 、 我们 向量(顶有向量箭头→) v ⃗ vec v v 估计(顶有尖头hat) y ^ hat{y} y ^ ​ 平均(

    2023年04月13日
    浏览(39)
  • Android Studio开发基础知识(持续更新中~)

    阅读本文需要有 Java 和 前端 的基础,本文是我学习Android时的笔记。 Info Key 复制行 Ctrl + D 删除行 Ctrl + Y 注释 Ctrl + / 注释2 Ctrl + Shift + / 撤销 Ctrl + Z 恢复 Ctrl + Shift + Z 显示结构 Ctrl + F12 格式化代码 Ctrl + Alt + L 打开设置 Ctrl + Alt + S 自动补全代码 Ctrl + Shift + Space 自动导包 Alt +

    2023年04月08日
    浏览(45)
  • (每日持续更新)jdk api之BufferedReader基础

    1.8 BufferedReader BufferedReader 是 Java 中 Reader 的缓冲流实现,用于提高读取字符数据的性能。它提供了一些额外的属性和方法,以增强对字符流的操作。 以下是 BufferedReader 的一些常用属性和方法: 属性: protected char[] cb : 用于存储缓冲数据的字符数组。可以通过构造函数指定缓

    2024年01月21日
    浏览(30)
  • (每日持续更新)jdk api之FileFilter基础、应用、实战

    博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能

    2024年01月17日
    浏览(35)
  • Oracle/PL/SQL数据库基础操作(持续更新)

            PL/SQL不是一个独立的编程语言;它是Oracle编程环境中的工具。 SQL* Plus是一个互动的工具,它可以在命令提示符下键入SQL和PL/SQL语句。这些命令发送到数据库进行处理。语句处理之后将结果发回,并在屏幕上显示出来。 分类 命令 DDL create:创建;drop:删除;alter:

    2024年02月09日
    浏览(59)
  • (每日持续更新)jdk api之FileOutputStream基础、应用、实战

    博主18年的互联网软件开发经验,从一名程序员小白逐步成为了一名架构师,我想通过平台将经验分享给大家,因此博主每天会在各个大牛网站点赞量超高的博客等寻找该技术栈的资料结合自己的经验,晚上进行用心精简、整理、总结、定稿,每天都会整理到12点,为了就是能

    2024年01月17日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包