爬虫基本内容

介绍

我们在很多地方都听到过这个词 爬虫 我的理解是它是来浏览网络中的数据进而爬取 最主要的是它是自动化的 也是程序的核心 即提高效率

应用场景

  • 搜索引擎索引网页内容
  • 抓取数据分析需要的数据
  • 电商价格监控
  • 社交媒体舆情分析

简单代码展示

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
33
34
35
36
37
38
39
40
41
42
43
import requests
from lxml import etree

# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36'
}

# 目标URL
url = 'https://example.com'

# 发送GET请求
response = requests.get(url, headers=headers)

# 检查请求是否成功
if response.status_code == 200:
# 解析HTML内容
html = etree.HTML(response.text)

# 使用XPath提取所有段落文本
paragraphs = html.xpath('//p/text()')
for p in paragraphs:
print(p.strip())

# 提取所有链接的href属性
links = html.xpath('//a/@href')
for link in links:
print(f"链接: {link}")

# 提取特定类的元素
# 例如: <div class="article">
articles = html.xpath('//div[@class="article"]')
for article in articles:
# 提取文章标题
title = article.xpath('./h2/text()')[0] if article.xpath('./h2/text()') else "无标题"
# 提取文章内容
content = article.xpath('./p/text()') if article.xpath('./p/text()') else ["无内容"]

print(f"标题: {title}")
print(f"内容: {''.join(content)}")
print("-" * 50)
else:
print(f"请求失败,状态码: {response.status_code}")

难点

现在的网站或多或少都有反爬机制 一方面这不是正常的用户访问请求 会给服务器造成很多额外开销 甚至是影响别人正常的使用 另一方面别人也不想把数据给你 所有都会做很多限制

目前的我的技术非常菜 仅限于简单的JS破解 再难一些的就不会了 所有到最后爬虫难点就在逆向 需要你对JavaScript有很深入的理解

使用爬虫时需要注意以下几点:

  • 尊重网站的robots.txt规则
  • 控制请求频率,避免对目标网站造成负担
  • 不要抓取敏感或私人信息
  • 遵守相关法律法规,不用于非法用途
  • 获取到的数据要合理使用,尊重原创内容

爬虫基本内容
https://zhiting.cc/2025/03/27/爬虫/
作者
至庭
发布于
2025年3月27日
许可协议