
python如何爬取href
用户关注问题
如何使用Python获取网页中的所有链接?
我想从一个网页上提取所有的超链接,应该用哪些Python工具?
使用BeautifulSoup提取网页链接
可以使用Python的requests库获取网页内容,再用BeautifulSoup库解析HTML。通过查找所有的标签并获取它们的href属性,可以得到所有超链接。例如:
import requests
from bs4 import BeautifulSoup
response = requests.get('http://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拼接成完整的链接。示例代码如下:
from urllib.parse import urljoin
base_url = 'http://example.com/page/'
relative_link = '/about'
full_url = urljoin(base_url, relative_link)
print(full_url) # 输出 http://example.com/about
如何避免爬取链接时遇到403禁止访问错误?
有时候请求网页爬取链接时会返回403错误,有什么解决办法?
设置请求头模拟浏览器行为
在发送HTTP请求时,可以添加User-Agent等请求头,模拟浏览器访问,避免被网站拦截。示例如下:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get('http://example.com', headers=headers)
print(response.status_code)