python爬虫

  • python爬虫
    • robots.txt
    • 爬虫实战

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

python爬虫_第1张图片

“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. 编写程序
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}")

运行之后就会返回如下内容
python爬虫_第2张图片

你可能感兴趣的:(Python,python,爬虫)