
python 爬取网页的超连接
常见问答
如何使用Python提取网页中的所有超链接?
我想用Python爬取网页,获取页面内所有的超链接,有哪些常用的方法可以实现?
利用requests和BeautifulSoup提取超链接
可以使用requests库获取网页内容,再用BeautifulSoup解析HTML,通过查找所有标签并获取其href属性来提取超链接。例如:
import requests
from bs4 import BeautifulSoup
response = requests.get('https://example.com')
soup = BeautifulSoup(response.text, 'html.parser')
links = [a.get('href') for a in soup.find_all('a', href=True)]
print(links)
爬取网页超链接时如何处理相对路径?
在爬取网页时,有些超链接是相对路径,我该如何将它们转换成完整的URL?
使用urljoin合并基础URL和相对路径
Python的urllib.parse模块提供了urljoin函数,可以将相对路径和基础URL合并成完整的URL。例如:
from urllib.parse import urljoin
base_url = 'https://example.com/page/'
relative_url = '../about.html'
full_url = urljoin(base_url, relative_url)
print(full_url) # 输出完整URL
如何避免爬取网页超链接时遇到重复链接?
我在爬取网页中的超链接,经常出现重复的链接,如何有效去重?
利用集合对链接进行去重处理
爬取到的链接可以放入Python的set集合中,因为集合不允许元素重复,从而实现自动去重。示例:
links = ['https://example.com', 'https://example.com', 'https://example.com/about']
unique_links = set(links)
print(list(unique_links))