爬取埃及OLX页面时内容不完整或编码异常问题求助
解决OLX埃及站点爬取内容不完整/编码异常问题
爬取OLX埃及站点时出现内容不完整或编码异常,核心原因有两个:一是请求未模拟浏览器被反爬拦截,返回截断内容;二是requests自动编码识别偏差导致阿拉伯语乱码。直接用以下方案修复:
修复步骤
- 补全浏览器请求头:OLX会校验请求的用户代理(User-Agent),无合法UA的请求会返回不完整的页面内容。
- 强制指定UTF-8编码:阿拉伯语内容使用UTF-8编码,手动指定可避免requests自动识别编码错误。
完整修复代码
import requests from bs4 import BeautifulSoup # 目标链接 link_scraping = 'https://olx.com.eg/ad/%D8%B4%D9%82%D9%87-%D8%A7%D9%84%D8%A8%D9%8A%D8%B9-%D9%81%D9%8A-%D8%AC%D9%86%D8%A9-%D9%85%D8%B5%D8%B1-%D8%A7%D9%84%D8%AA%D8%AC%D9%85%D8%B9-%D8%A7%D9%84%D8%AE%D8%A7%D9%85%D8%B3-ID197116204.html' # 模拟浏览器请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } # 发送请求 page = requests.get(link_scraping, headers=headers, timeout=100) # 强制指定UTF-8编码 page.encoding = 'utf-8' # 输出完整内容 print(page.text) # 若要解析内容,可继续用BeautifulSoup soup = BeautifulSoup(page.text, 'html.parser') # 示例:提取页面标题 title = soup.find('h1').get_text(strip=True) print(f"页面标题:{title}")
说明
- 移除了重复导入的
requests模块,精简代码结构。 - 添加的
User-Agent会让服务器判定请求来自真实浏览器,避免返回截断内容。 - 手动设置
page.encoding = 'utf-8',确保阿拉伯语和英语内容都能正确解码,不会出现编码异常。
内容的提问来源于stack exchange,提问作者mahmoud khalifa
相关产品推荐
相关产品推荐

