python - Python网页抓取Zacks网站错误:[WinError 10054]一个现有的连接被远程主机强行关闭
问题描述
我想获取位于此页面上的数据: https ://www.zacks.com/stock/quote/MA
我尝试在 Python 中使用 Beautiful Soup 执行此操作,但出现错误:“[WinError 10054] 现有连接被远程主机强行关闭”。
有人可以指导我吗?
from bs4 import BeautifulSoup
import urllib
import re
import urllib.request
url = 'https://www.zacks.com/stock/quote/MA'
r = urllib.request.urlopen(url).read()
soup = BeautifulSoup(r, "lxml")
soup
谢谢!
解决方案
该网站正在阻止您的请求,可能主机不允许没有请求标头的请求。您可以尝试使用 Selenium 包模拟“真实”请求。
这是有效的:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from bs4 import BeautifulSoup
options = Options()
options.set_headless(headless=True)
url = 'https://www.zacks.com/stock/quote/MA'
browser = webdriver.Firefox(firefox_options=options)
browser.get(url)
html_source = browser.page_source
soup = BeautifulSoup(html_source, "lxml")
print(soup)
browser.close()