【第一天】零基础入门刷题Python-爬虫篇-详细查看网站的robots.txt协议-爬取百度首页并存储为CSV形式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

第一天练习爬取百度首页并存储CSV形式(重点:第二天 )
第二天爬取百度首页并存储为CSV形式的四种方式

提示:以下是本篇文章正文内容,下面案例可供参考

一、爬虫是什么?常用的Python爬虫库是什么?网站的robots.txt协议是什么?

示例:

Python爬虫是一种自动化程序,用于从互联网上收集数据。这些程序通过模拟人类用户的网络行为(如浏览网页、点击链接等),访问目标网站并抓取所需的数据。Python之所以成为爬虫开发的首选语言之一,主要得益于其强大的网络请求库、HTML解析库以及简洁易读的语法。下面是对Python爬虫的一些详细解释:

  1. Python爬虫的基本流程 一个典型的Python爬虫的基本流程可以分为以下几个步骤:
    发送请求:使用如requests、urllib等库向目标网站发送HTTP请求,获取网页的HTML代码。
    解析网页:使用如BeautifulSoup、lxml或pyquery等库解析HTML代码,提取出所需的数据。
    存储数据:将提取的数据存储到本地文件、数据库或云存储中,以便后续分析或处理。
    处理反爬虫机制:一些网站为了防止爬虫,会采取一些反爬虫措施,如验证码验证、IP封锁等。爬虫开发者需要采取相应的策略来绕过这些机制。
  1. 常用的Python爬虫库 requests:一个简单易用的HTTP库,用于发送HTTP请求。 BeautifulSoup:一个用于解析HTML和XML文档的库,可以方便地从网页中提取数据。
    Scrapy:一个快速的高级Web抓取和网页抓取框架,用于抓取网站并从页面中提取结构化的数据。Scrapy使用了Twisted异步网络框架来处理网络通信。
    Selenium:一个自动化测试工具,可以模拟用户操作浏览器,适用于需要JavaScript渲染的网页。
    lxml:一个基于C语言的库,用于高效地解析和处理XML和HTML文档。
  1. 法律和道德考虑 在开发和使用Python爬虫时,必须遵守法律和道德规范。这包括但不限于:
    遵守网站的robots.txt协议:robots.txt文件定义了搜索引擎爬虫在网站上可以访问的路径。开发者应该尊重这些规则。
    不要过度抓取:频繁的请求可能会对目标网站造成负担,甚至导致服务器宕机。开发者应该合理设置抓取频率,避免给目标网站带来不必要的负担。
    保护用户隐私:在抓取涉及用户个人信息的数据时,必须遵守相关的隐私保护法规。
  1. 反爬虫策略 面对网站的反爬虫策略,开发者可能需要采取一些策略来绕过这些障碍,例如:
    使用代理IP:通过切换IP地址来避免IP被封锁。 增加请求头信息:模拟正常用户的请求头,如User-Agent、Referer等。
    使用Cookies:一些网站需要登录才能访问数据,爬虫需要处理登录流程并维护Cookies。
    处理验证码:一些网站会采用验证码来防止自动化请求,开发者可能需要使用OCR技术或第三方服务来自动识别验证码。
    总之,Python爬虫是一种强大的数据收集工具,但在使用过程中需要遵守法律和道德规范,同时采取适当的策略来应对反爬虫机制。

二、详细网站的robots.txt协议解释

robots协议详细介绍

  1. robots协议,也称为爬虫协议、机器人排除标准,是网站用来指导搜索引擎爬虫如何在其网站上抓取和访问内容的一种协议。这种协议通常位于网站根目录下的robots.txt文件中,通过该文件,网站可以告诉搜索引擎哪些页面可以被抓取,哪些页面不可以,从而保护敏感信息和用户隐私不被侵犯。

  2. robots协议并不是防火墙,也没有强制执行力,搜索引擎完全可以忽视robots.txt文件去抓取网页的快照。然而,遵守robots协议是网络爬虫开发者应遵循的基本原则之一,这有助于减少对服务器的压力,并避免因不合规的爬取行为引起的法律风险。

  3. robots.txt文件的基本语法规则包括:
    User-agent:指定某个特定的搜索引擎机器人。 Disallow:表示禁止访问的路径。 Allow:表示允许访问的路径。

  • 如果网站管理员希望禁止所有搜索引擎访问/private目录,可以在robots.txt文件中写入以下内容:
# 再次指定规则适用于所有搜索引擎爬虫(通常不需要重复,除非有特殊意图)
User-agent: *
# 禁止所有搜索引擎爬虫访问网站的/private/目录及其子目录中的所有页面
Disallow: /private/
  1. 如果网站管理员希望允许所有搜索引擎访问,可以在robots.txt文件中写入以下内容:
# 指定该规则适用于所有搜索引擎爬虫(*表示通配符,匹配所有)
User-agent: *
# 这行Disallow没有指定路径,实际上是一个无效的指令,通常意味着不阻止任何路径
# 但在某些解析器中可能会被视为错误或忽略该条规则
Disallow: 
  1. 如果网站管理员希望禁止访问/private目录希望允许访问/secret/目录,可以在robots.txt文件中写入以下内容:
# 再次指定规则适用于所有搜索引擎爬虫(通常不需要重复,除非有特殊意图)
User-agent: *
# 禁止所有搜索引擎爬虫访问网站的/private/目录及其子目录中的所有页面
Disallow: /private/
# 禁止所有搜索引擎爬虫访问网站的/secret/目录及其子目录中的所有页面
Allow: /secret/

现在,那我们怎么使用robots协议查看百度首页的协议呢?

现在打开查看https://www.baidu.com的robots协议,你可以按照以下步骤进行操作:

  1. 方法一:直接访问robots.txt文件 打开浏览器:启动你常用的网页浏览器,如Chrome、Firefox、Edge等。 输入网址:在浏览器的地址栏中输入https://www.baidu.com/robots.txt
    查看内容:按下回车键后,浏览器将加载并显示百度网站的robots.txt文件内容。这个文件包含了百度网站对搜索引擎爬虫的访问限制和规则。

  2. 方法二:使用百度资源平台 访问百度资源平台:在浏览器中打开百度资源平台的官方网站。 导航到Robots文件检测:在百度资源平台中,找到并点击“网站支持”或类似的选项,然后在子菜单中找到并点击“Robots”或“Robots文件检测”。
    输入网址并检测:在提供的输入框中输入你想要查看的网站的网址(在这个例子中是https://www.baidu.com),然后点击“检测”按钮。系统将显示该网站的robots.txt文件内容及其解释。

  3. 方法三:通过搜索引擎搜索结果 打开搜索引擎:在浏览器中打开百度搜索引擎或其他你常用的搜索引擎。 搜索robots.txt文件:在搜索框中输入https://www.baidu.com/robots.txt(注意替换为你想要查看的网站的网址)。
    查看搜索结果:在搜索结果中找到并点击对应的robots.txt文件链接,浏览器将加载并显示该文件的内容。 注意事项
    理解内容:在查看robots.txt文件时,注意理解其中的语法和规则。例如,User-agent指定了搜索引擎爬虫的名称,Disallow表示禁止访问的路径,而Allow则表示允许访问的路径。
    协议非强制性:值得注意的是,robots协议并不是强制性的规范,搜索引擎可以选择忽略它。因此,即使网站设置了robots.txt文件,也不能完全保证网站的隐私。
    通过以上方法,你可以轻松地查看百度网站的robots协议内容,并了解其对搜索引擎爬虫的访问限制和规则。
    在这里插入图片描述
    https://www.baidu.com/robots.txt

三、每日一练

1.爬取百度首页并存储为CSV形式(未完)

第二天将展示完整的代码和如何实现百度首页网站爬取的四种方法

第二天将展示完整的代码和如何实现百度首页网站爬取的四种方法
代码如下(示例):

import requests  # 导入 requests 库,用于发送 HTTP 请求
import csv  # 导入 csv 库,用于处理 CSV 文件

# 发送 HTTP 请求获取百度首页内容
url = 'https://www.baidu.com'  # 定义要请求的百度首页的 URL 地址
try:
    # 发送 GET 请求,并设置超时时间为 10 秒,防止请求挂起
    response = requests.get(url, timeout=10)  # 发送一个 HTTP GET 请求到指定的 url,并设置超时时间为 10 秒,避免请求长时间无响应
    # 如果响应状态码不是 200,将引发 HTTPError 异常
    response.raise_for_status()  # 检查请求的响应状态码,如果不是 200(表示请求成功),则会引发一个 HTTPError 异常

    # 获取 HTML 内容
    html_content = response.text  # 获取响应的文本内容,也就是百度首页的 HTML 代码

    # 提取页面标题(可选)
    from bs4 import BeautifulSoup  # 从 bs4 库中导入 BeautifulSoup 模块,用于解析 HTML 内容
    # 使用 html.parser 解析器创建一个 BeautifulSoup 对象
    soup = BeautifulSoup(html_content, 'html.parser')  # 使用 html.parser 作为解析器将 HTML 内容解析为一个 BeautifulSoup 对象,方便后续提取元素
    # 获取页面的标题,如果没有标题则设置为 'No Title'
    title = soup.title.string if soup.title else 'No Title'  # 尝试从解析后的对象中提取页面标题,如果存在则获取其文本内容,若不存在则设置为 'No Title'

    # 准备 CSV 数据
    csv_data = [
        ['URL', 'Title', 'HTML Content'],  # CSV 文件的表头,包含 URL、Title 和 HTML Content 三个列名
        [url, title, html_content]  # 实际数据,存储百度首页的 URL、提取的标题和完整的 HTML 内容
    ]

    # 存储为 CSV 文件
    csv_file_path = 'baidu_homepage_content.csv'  # 定义存储 CSV 文件的路径
    # 以写入模式打开文件,使用 utf-8 编码,确保文件以正确的编码方式存储数据
    with open(csv_file_path, mode='w', newline='', encoding='utf-8') as file:  # 以写入模式打开指定路径的文件,使用 utf-8 编码,避免乱码
        writer = csv.writer(file)  # 创建一个 CSV 写入器对象,用于将数据写入文件
        # 将数据写入 CSV 文件
        writer.writerows(csv_data)  # 将 csv_data 中的数据写入文件,包括表头和实际数据

    print(f"百度首页信息已保存到 {csv_file_path}")  # 打印保存成功的消息,告知用户信息已保存到指定的 CSV 文件中

except requests.exceptions.RequestException as e:  # 捕获 requests 库的异常
    print(f"请求过程中发生错误:{e}")  # 打印请求过程中发生的错误信息,该错误属于 requests 库相关异常
except Exception as e:  # 捕获其他异常
    print(f"发生未预料的错误:{e}")  # 打印其他未预料到的异常信息,包括非 requests 库相关的异常

注意:如果你打开百度的首页,查看的百度首页源代码,比爬取的源代码要多,那请关注,第二天将展示完整的代码和如何实现百度首页网站爬取的四种方法


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文简单介绍了爬虫是什么?常用的Python爬虫库是什么?网站的robots.txt协议是什么?还有怎么爬取百度首页并存储CSV形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值