Python 冒险之旅|第六章 龙之岛,网络与爬虫技巧

57 阅读2分钟

小艾和波波乘着时间沙漏的力量,又一次出现在了一个陌生的地方,这里是被称作"龙之岛"的地方。岛上的每一片土地、每一个树叶、每一个风声都似乎在流传着网络的消息。

"这是一个与外界沟通的关键地带,"波波解释道,"在这里,信息流转如同水流一般自由。要想找到离岛的路,我们需要学会与这片陆地的网络生物沟通,解读他们的语言,找到线索。"

在探索过程中,小艾遇到了一个守护网络的古老龙。"要想与我对话,首先你需要掌握网络之语。"龙缓缓地说。

技术点:Python网络编程基础

为了与这片陆地的网络生物沟通,小艾开始尝试网络编程。

import socket

# 创建一个 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接到远程服务器
server_address = ('dragon.island', 8080)
s.connect(server_address)

try:
    # 发送数据
    message = 'Hello, Dragon! Tell me your secrets.'
    s.sendall(message.encode())

    # 获取回应
    data = s.recv(1024)
    print('Received:', data.decode())
finally:
    s.close()

"知识就是宝藏,"龙说道,"但要找到真正的宝藏,你需要学会'爬'过网络的山丘,'潜'入数据的海洋。"

技术点:网页爬虫与数据提取

import requests
from bs4 import BeautifulSoup

# 请求网页内容
response = requests.get('https://dragon.treasure.org')
response.raise_for_status() # 检查请求是否成功

# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
links = [a['href'] for a in soup.find_all('a', href=True) if a.text]
for link in links:
    print(link)

"有了这些技能,你可以自由驾驭数据的海洋。"龙满意地看着小艾,"现在,为了离岛,你需要建造你自己的'龙之船'。"

技术点:构建自己的Web爬虫

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
}

def fetch_content(url):
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    return response.text

def parse_links(html_content):
    soup = BeautifulSoup(html_content, 'html.parser')
    return [a['href'] for a in soup.find_all('a', href=True) if a.text]

start_url = 'https://dragon.treasure.org/start'
content = fetch_content(start_url)
links = parse_links(content)
for link in links:
    print(link)

"谢谢你,古老的龙。"小艾感慨地说,带着新获得的技能和知识,她和波波继续他们的旅程,朝着离岛的方向前进。