python抓取网页中的链接地址

本文介绍如何使用Python的re和requests模块来获取网页内容,并利用正则表达式提取网页中的所有链接。
# coding:utf-8

import re
import requests

# 获取网页内容
r = requests.get('http://www.163.com')
data = r.text

# 利用正则查找所有连接
link_list =re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" ,data)
for url in link_list:

    print url



首先import进re和requests模块,re模块是使用正则表达式的模块。

data = requests.get('http://www.163.com'),向网易首页提交get请求,得到一个requests对象r,r.text就是获得的网页源代码,保存在字符串data中。

再利用正则查找data中所有的链接,我的正则写的比较粗糙,直接把href=""或href=''之间的信息获取到,这就是我们要的链接信息。

re.findall返回的是一个列表,用for循环遍历列表并输出:

输入结果如下图:


<think>我们之前没有对话历史,所以无法参考之前的对话。但根据用户当前的问题,他想学习如何使用Python爬虫抓取网页中的链接。我们将使用requests网页内容,然后使用BeautifulSoup解析网页,提取所有链接。步骤:1.安装requests和beautifulsoup4库(如果用户没有安装的话)2.导入必要的库3.取目标网页内容4.解析网页,提取所有<a>标签的href属性5.过滤和清洗链接(如相对路径转绝对路径)6.输出所有链接注意:我们只抓取页面中<a>标签的链接,并且只处理HTTP和HTTPS链接(跳过mailto和javascript等)。另外,我们需要注意爬虫的伦理和法律问题,不要爬取禁止爬取的网站。考虑到用户的问题,我们将提供一个基础示例。由于是独立代码块,我们使用```python代码块```来展示。同时,根据系统指令,我们需要在回答后生成相关问题。</think> ### 使用Python爬虫抓取网页链接的完整指南 #### 基本原理 1. **网页结构解析**:链接通常位于HTML的`<a>`标签中,通过`href`属性定义 2. **HTTP请求**:使用Python网页内容 3. **数据提取**:解析HTML文档提取所有链接 4. **链接处理**:处理相对路径链接转为绝对路径 #### 完整代码实现 ```python import requests from urllib.parse import urljoin, urlparse from bs4 import BeautifulSoup def extract_links(url): # 发送HTTP请求 try: response = requests.get(url) response.raise_for_status() # 检查请求状态 except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return [] # 解析HTML soup = BeautifulSoup(response.text, 'html.parser') # 提取链接重 links = set() for a_tag in soup.find_all('a', href=True): href = a_tag['href'].strip() if href and not href.startswith(('javascript:', 'mailto:')): # 转换相对链接为绝对链接 absolute_url = urljoin(url, href) parsed = urlparse(absolute_url) if parsed.scheme in ('http', 'https'): links.add(absolute_url) return list(links) # 示例使用 if __name__ == "__main__": target_url = "https://example.com" # 替换为目标网址 all_links = extract_links(target_url) print(f"找到 {len(all_links)} 个链接:") for i, link in enumerate(all_links, 1): print(f"{i}. {link}") ``` #### 关键组件说明 1. **requests**:发送HTTP请求网页内容[^1] 2. **BeautifulSoup**:HTML解析库,处理文档树结构[^2] 3. **urllib.parse**: - `urljoin`:处理相对路径链接 - `urlparse`:验证URL格式 4. **链接筛选**: - 排除`javascript:`和`mailto:`等非HTTP链接 - 保留`http`/`https`协议的有效链接 #### 使用前准备 安装必要库: ```bash pip install requests beautifulsoup4 ``` #### 注意事项 1. **尊重robots.txt**:检查目标网站的爬虫协议 2. **添加延迟**:连续请求时加入`time.sleep(1)`避免被封 3. **设置User-Agent**:模拟浏览器行为: ```python headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值