⚠️重要提醒

 

1. 爬虫务必遵守网站  robots.txt  协议,不要高频疯狂请求,避免给服务器造成压力;

2. 禁止爬取隐私、付费、受版权保护的数据;

3. 很多现代网页是JS动态渲染, requests 拿不到内容,需要用Selenium/Playwright;

4. 学习用途,不要用于商用。

 

准备库

 

-  requests :发送HTTP请求获取网页源码

-  BeautifulSoup4 :解析HTML提取数据

 

bash

pip install requests beautifulsoup4

 

 

示例1:静态网页简单爬虫(获取网页标题、链接)

 

python

import requests

from bs4 import BeautifulSoup

 

def simple_crawler(url):

    # 请求头,模拟浏览器访问,防止被拦截

    headers = {

        "User‑Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

    }

    try:

        # 发送get请求,设置超时

        resp = requests.get(url, headers=headers, timeout=10)

        resp.raise_for_status() # 如果状态码不是200抛出异常

        resp.encoding = resp.apparent_encoding # 自动识别编码

 

        soup = BeautifulSoup(resp.text, "html.parser")

        # 获取网页标题

        title = soup.find("title").text

        print("网页标题:", title)

 

        # 提取页面所有超链接

        links = soup.find_all("a")

        for a_tag in links[:10]: #只打印前10条

            link_text = a_tag.get_text(strip=True)

            href = a_tag.get("href")

            if href:

                print(f"文本:{link_text} 链接:{href}")

 

    except Exception as e:

        print("请求出错:", e)

 

if __name__ == "__main__":

    target_url = "https://example.com" # 测试网站example.com

    simple_crawler(target_url)

 

 

核心知识点说明

 

1. User‑Agent:伪装成浏览器,部分网站会拒绝没有UA的程序访问;

2.  requests.get()  获取页面HTML源代码;

3.  BeautifulSoup(html,"html.parser")  解析网页;

-  .find("标签名")  获取第一个匹配标签

-  .find_all("标签名")  获取全部匹配标签

-  .get_text()  获取标签内文字

-  .get("属性名")  获取标签属性(href、src)

 

示例2:把爬取的数据保存到本地txt

 

python

# 在上面代码基础上增加保存逻辑

with open("result.txt","w",encoding="utf‑8") as f:

    f.write(title + "\n")

    for a_tag in links:

        txt = a_tag.get_text(strip=True)

        h = a_tag.get("href")

        f.write(f"{txt} | {h}\n")

 

 

常见问题

 

1. 返回乱码:设置  resp.encoding = resp.apparent_encoding 

2. 403禁止访问:缺少请求头headers,网站识别出爬虫;

3. 拿不到网页内容:网页是JS动态加载,requests只能拿到初始HTML → 使用Selenium;

4. 请求太快被封IP:导入 time 模块,每次请求后  time.sleep(1~3)  延时。

 

Selenium简易动态网页爬虫(可选扩展)

 

如果页面是js渲染,requests拿不到数据,需要selenium驱动真实浏览器。

 

bash

pip install selenium

 

 

爬虫道德与法律

 

- 控制访问频率,增加 sleep() 延时;

- 不爬取登录后才可见的内容;

- 不破解反爬、不批量骚扰服务器。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐