使用Python爬虫遇URLError:unknown url type: view-source问题求助
解决爬取华尔街见闻全球直播页面的URLError问题
哎,这个问题我太熟了!你遇到的URLError: unknown url type: view-source根本原因很简单——view-source:是Chrome浏览器专属的“小命令”,不是合法的URL协议,urllib可看不懂这个玩意儿。
浏览器里输入view-source:xxx是告诉Chrome“帮我显示这个页面的源代码”,但爬虫库只认正经的http/https开头的URL。所以第一步就是把这个前缀删掉!
不过别急,直接用原始URL请求大概率会被网站反爬拦截,因为urllib默认的请求头会暴露你是爬虫。下面给你修正后的完整代码,还加了模拟浏览器的请求头:
import urllib.request # 去掉view-source前缀,用真实的页面URL url_src = 'https://wallstreetcn.com/live/global?from=navbar' # 模拟Chrome浏览器的请求头,避免被反爬拒绝 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } # 构造带请求头的请求对象 req = urllib.request.Request(url_src, headers=headers) try: # 发起请求 response = urllib.request.urlopen(req) # 读取页面内容,注意用utf-8解码(华尔街见闻页面是utf-8编码) page_content = response.read().decode('utf-8') # 打印前500个字符验证是否成功获取 print(page_content[:500]) except urllib.error.URLError as e: print(f"请求失败:{e}")
再给你提几个关键点:
- User-Agent的作用:网站会通过这个字段识别请求来源,如果是
Python-urllib/3.x这种默认值,直接就会被反爬机制挡在门外,换成浏览器的UA就能绕过基础反爬。 - 如果后续遇到页面内容是动态渲染的(比如滚动加载、JS生成内容),那urllib就不够用了,可能需要用Selenium或者Playwright来模拟浏览器行为,但先把当前的基础问题解决再说。
内容的提问来源于stack exchange,提问作者Michael C
相关产品推荐
相关产品推荐

