python爬虫
爬虫(Spider)通常是指一个自动化程序或脚本,用于在互联网上获取信息,通常是从网站上抓取数据
工作原理: 爬虫工作的基本原理是模拟人工浏览网页的行为。它们向目标网站发送HTTP请求,然后解析网页的内容,提取所需的信息。这些信息可以是文本、图像、链接或其他类型的数据。
爬虫规则: 爬虫必须遵守网站的"robots.txt"文件和"爬虫协议",以确保他们不会滥用网站资源或侵犯网站的隐私政策。
反爬虫技术: 为了保护其网站免受爬虫的干扰,许多网站会采用反爬虫技术,如验证码、IP封锁和频率限制等措施,这使得对这些网站的爬取更加困难。
在使用爬虫时,必须遵守伦理准则和法律规定。滥用爬虫可能会导致法律诉讼或网络伦理问题,因此务必慎重使用
robots.txt
“robots.txt” 是一种标准的文本文件,通常位于网站的根目录下,用于指导网络爬虫程序(如搜索引擎爬虫)在访问网站时应该遵循的规则和指导。
如百度的robots.txt网址为 https://www.baidu.com/robots.txt
这个文件会告诉爬虫哪些页面可以爬取,哪些页面不应该被爬取,以及爬取的速率限制等信息。
“robots.txt” 的目的是帮助网站所有者控制爬虫对其网站的访问,以维护网站的合法性和性能
常见的"robots.txt" 文件指令:
- User-agent: 这一指令后面通常跟着爬虫的名称或通配符(如 * ),用于指定哪个爬虫应该遵循后面的规则
如:User-agent: Baiduspider
- Disallow: 这一指令用于指定哪些页面或目录不允许爬虫访问
如:Disallow: /baidu
- Allow: 与Disallow相对,用于指定某些页面或目录允许被爬虫访问,即使前面使用了Disallow
如:Allow: /public/
- Crawl-delay: 用于指定爬虫请求页面的时间间隔,以避免过于频繁的访问
如:Crawl-delay: 10
“robots.txt” 文件对不同爬虫的支持程度有所不同,因此它是一种建议性的指令。一些爬虫程序会遵循这些规则,而有些可能会忽略它们。因此,网站所有者不能完全依赖 “robots.txt” 文件来绝对限制或保护其网站的内容。要更可靠地控制对网站的访问,通常需要采用其他安全措施
如果网站信息都需要被抓取,是不是可以不用robots.txt了?
每当用户试图访问某个不存在的URL时,服务器都会在日志中记录404错误(无法找到文件)。每当爬虫来寻找并不存在的robots.txt文件时,服务器也将在日志中记录一条404错误,所以建议还是添加一个robots.txt。
参考https://blog.youkuaiyun.com/m0_51683653/article/details/127252676
爬虫实战
以抓取python官方网站上的文章标题和链接为例,使用 requests
以及 Beautiful Soup 4 (bs4)
库
- 安装所需库
在命令行安装所需的两个库
pip install requests
pip install beautifulsoup4
- 编写程序
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}")
运行之后就会返回如下内容