• python爬虫


    python爬虫

    爬虫(Spider)通常是指一个自动化程序或脚本,用于在互联网上获取信息,通常是从网站上抓取数据

    工作原理: 爬虫工作的基本原理是模拟人工浏览网页的行为。它们向目标网站发送HTTP请求,然后解析网页的内容,提取所需的信息。这些信息可以是文本、图像、链接或其他类型的数据。

    爬虫规则: 爬虫必须遵守网站的"robots.txt"文件和"爬虫协议",以确保他们不会滥用网站资源或侵犯网站的隐私政策。

    反爬虫技术: 为了保护其网站免受爬虫的干扰,许多网站会采用反爬虫技术,如验证码、IP封锁和频率限制等措施,这使得对这些网站的爬取更加困难。

    在使用爬虫时,必须遵守伦理准则和法律规定。滥用爬虫可能会导致法律诉讼或网络伦理问题,因此务必慎重使用

    robots.txt

    “robots.txt” 是一种标准的文本文件,通常位于网站的根目录下,用于指导网络爬虫程序(如搜索引擎爬虫)在访问网站时应该遵循的规则和指导。
    如百度的robots.txt网址为 https://www.baidu.com/robots.txt
    这个文件会告诉爬虫哪些页面可以爬取,哪些页面不应该被爬取,以及爬取的速率限制等信息。
    “robots.txt” 的目的是帮助网站所有者控制爬虫对其网站的访问,以维护网站的合法性和性能

    常见的"robots.txt" 文件指令:

    1. User-agent: 这一指令后面通常跟着爬虫的名称或通配符(如 * ),用于指定哪个爬虫应该遵循后面的规则
      如: User-agent: Baiduspider
    2. Disallow: 这一指令用于指定哪些页面或目录不允许爬虫访问
      如: Disallow: /baidu
    3. Allow: 与Disallow相对,用于指定某些页面或目录允许被爬虫访问,即使前面使用了Disallow
      如: Allow: /public/
    4. Crawl-delay: 用于指定爬虫请求页面的时间间隔,以避免过于频繁的访问
      如: Crawl-delay: 10

    在这里插入图片描述

    “robots.txt” 文件对不同爬虫的支持程度有所不同,因此它是一种建议性的指令。一些爬虫程序会遵循这些规则,而有些可能会忽略它们。因此,网站所有者不能完全依赖 “robots.txt” 文件来绝对限制或保护其网站的内容。要更可靠地控制对网站的访问,通常需要采用其他安全措施

    如果网站信息都需要被抓取,是不是可以不用robots.txt了?
    每当用户试图访问某个不存在的URL时,服务器都会在日志中记录404错误(无法找到文件)。每当爬虫来寻找并不存在的robots.txt文件时,服务器也将在日志中记录一条404错误,所以建议还是添加一个robots.txt。

    参考https://blog.csdn.net/m0_51683653/article/details/127252676

    爬虫实战

    以抓取python官方网站上的文章标题和链接为例,使用 requests 以及 Beautiful Soup 4 (bs4)

    1. 安装所需库
      在命令行安装所需的两个库
    pip install requests
    pip install beautifulsoup4
    
    • 1
    • 2
    1. 编写程序
    import requests
    # beautifulsoup可以解析html内容,他会把HTML内容解析成树状结构
    from bs4 import BeautifulSoup
    
    # 指定要抓取信息的网站
    url = 'https://docs.python.org/3/'
    # 发起GTE请求
    response = requests.get(url)
    
    # 如果返回的状态码为200就表示成功获取页面
    if response.status_code == 200:
    	# text返回网页源码
        html = response.text
    
        # 使用Beautiful Soup解析页面,将HTML文档转换为可操作的Python对象
        soup = BeautifulSoup(html, 'html.parser')
    
        # 选择所有的文档链接
        links = soup.find_all('a')
    
        # print(links)
    
        # 遍历链接并提取标题和链接
        for link in links:
        	# 提取每个链接的文本内容(标题)和href属性(链接)
            title = link.text
            href = link['href']
            if href.startswith('https://docs.python.org/3') and title:
                print(f"标题: {title}\n链接: {href}\n")
    else:
        print(f"无法访问页面,状态码: {response.status_code}")
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    运行之后就会返回如下内容
    在这里插入图片描述

  • 相关阅读:
    逍遥自在学C语言 | 位运算符^的高级用法
    极坐标转化
    C语言Socket编程,实现两个程序间的通信
    hms学习
    搜索与图论:染色法判定二分图
    JPA - Hibernate
    “图”学习提纲
    利用IP地址信息提升网络安全
    基于B/S的影视创作论坛的设计与实现(附:源码 论文 sql文件 项目部署教程)
    1.4_1 Axure RP 9 for mac 入门
  • 原文地址:https://blog.csdn.net/qq_45742976/article/details/133301612