悠悠楠杉
Python爬虫如何抓取网页
python
import requests
url = "https://example-news-site.com/article/123"
response = requests.get(url)
if response.statuscode == 200:
htmlcontent = response.text
else:
print(f"请求失败,状态码:{response.status_code}")
这里我们检查了响应状态码是否为200,确保请求成功后,再获取网页的原始HTML文本。需要注意的是,部分网站会对频繁请求进行限制或反爬虫处理,因此合理设置请求头(headers)十分必要。例如添加User-Agent字段,伪装成真实浏览器访问:
python
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
response = requests.get(url, headers=headers)
获取到HTML内容后,下一步是解析页面结构以提取目标数据。此时BeautifulSoup库便派上了用场。同样可通过pip install beautifulsoup4安装。它能够将杂乱的HTML转化为可操作的对象树,便于定位特定标签。
python
from bs4 import BeautifulSoup
soup = BeautifulSoup(htmlcontent, 'html.parser')
title = soup.find('h1').gettext().strip()
contentdiv = soup.find('div', class='article-content')
paragraphs = contentdiv.findall('p')
articletext = '\n'.join([p.gettext() for p in paragraphs])
上述代码中,我们通过标签名和CSS类名定位标题和正文区域,并逐段提取文字内容。这种基于DOM结构的选择方式灵活且直观。对于结构复杂或动态加载的页面,可能还需结合Selenium等工具驱动真实浏览器运行JavaScript脚本。
此外,在实际应用中还需注意合法性与道德边界。应遵守网站的robots.txt协议,避免对服务器造成过大压力。同时,敏感信息、个人隐私等内容不可随意抓取与传播。合理使用延时(如time.sleep())、代理IP轮换等技术手段,既能保护自身账号安全,也体现了对网络生态的尊重。
