python - 使用 Python3.7 进行网页抓取:ConnectionError: HTTPSConnectionPool(host='www.google.com', port=443):
问题描述
我想从 google.com 抓取网络结果。我遵循了这个问题的第一个答案,Google Search Web Scraping with Python。不幸的是,我遇到了连接错误。我碰巧也查了其他网站,它没有连接。是因为公司代理设置吗?
请注意,我正在使用虚拟环境“Webscraping”。
from urllib.parse import urlencode, urlparse, parse_qs
from lxml.html import fromstring
from requests import get
raw = get("https://www.google.com/search?q=StackOverflow").text
page = fromstring(raw)
for result in page.cssselect(".r a"):
url = result.get("href")
if url.startswith("/url?"):
url = parse_qs(urlparse(url).query)['q']
print(url[0])
raw = get("https://www.google.com/search?q=StackOverflow").text Traceback(最近一次通话最后):
文件“”,第 1 行,在 raw = get("https://www.google.com/search?q=StackOverflow").text
文件“c:\users\appdata\local\programs\python\python37\webscraping\lib\site-packages\requests\api.py”,第 75 行,在 get return request('get', url, params=params, **kwargs)
文件“c:\users\appdata\local\programs\python\python37\webscraping\lib\site-packages\requests\api.py”,第 60 行,在请求返回 session.request(method=method, url=url, **kwargs)
文件“c:\users\appdata\local\programs\python\python37\webscraping\lib\site-packages\requests\sessions.py”,第 524 行,请求 resp = self.send(prep, **send_kwargs)
文件“c:\users\appdata\local\programs\python\python37\webscraping\lib\site-packages\requests\sessions.py”,第 637 行,发送 r = adapter.send(request, **kwargs)
文件“c:\users\appdata\local\programs\python\python37\webscraping\lib\site-packages\requests\adapters.py”,第 516 行,在发送中引发 ConnectionError(e, request=request)
ConnectionError: HTTPSConnectionPool(host='www.google.com', port=443): url: /search?q=StackOverflow 超过最大重试次数(由 NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x0000021B79768748>: Failed to建立新连接:[WinError 10060] 连接尝试失败,因为连接的一方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应'))
请指教。谢谢
编辑:我尝试锁定 google.com,但失败了。
import os
hostname = "https://www.google.com" #example
response = os.system("ping -c 1 " + hostname)
#and then check the response...
if response == 0:
print(hostname, 'is up!')
else:
print(hostname, 'is down!')
解决方案
我认为由于您的代理设置,您会收到此错误。尝试在命令提示符下运行以下命令之一
set http_proxy=http://proxy_address:port
set http_proxy=http://user:password@proxy_address:port
set https_proxy=https://proxy_address:port
set https_proxy=https://user:password@proxy_address:port
推荐阅读
- sql - 如何通过检查编译器日志错误修复触发器?
- angular - 使用 APP_INITIALIZER 的角度加载配置
- r - R中的减法以及如何删除没有信息的行
- vue.js - VUE:整个页面消失了,只显示“代理错误...”
- flutter - 如何使用 FCM 在颤振中实现通知应用程序徽章图标?
- c# - 在没有等待抛出错误的情况下调用异步方法 HttpClient
- python - 交互式 matplotlib 图形:在图形顶部显示然后关闭图像
- c# - 如何为具有不同起点和终点切线斜率的弧创建贝塞尔曲线
- excel - VBA 在完成之前停止
- html - 我在我的 html 中链接 css 文件时遇到问题