python - 两个几乎相同的代码,一个有效,另一个无效
问题描述
我不知道为什么第一个代码有效,但第二个无效。在“阿迪达斯”代码之后,我得到“连接中止,OSError 10054”的答案。我在网站上听说过一些关于 API 的事情,老实说,我不知道它是什么,但我认为它是相关的 :D
有用:
import requests
from bs4 import BeautifulSoup
odpowiedz = requests.get("https://www.nike.com/pl/w?q=react%20270&vst=react%20270")
soup = BeautifulSoup(odpowiedz.text, 'html.parser')
它不起作用:
import requests
from bs4 import BeautifulSoup
odpowiedz = requests.get("https://www.adidas.pl/search?q=ultraboost")
soup = BeautifulSoup(odpowiedz.text, 'html.parser')
解决方案
您可以使用selenium而不是 requests 来获取页面源
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Chrome()
driver.get("https://www.adidas.pl/search?q=ultraboost")
source = driver.page_source
soup = BeautifulSoup(source, 'html.parser')
如果您想在获得页面源后退出 chrome,请使用 driver.quit()
from selenium import webdriver
from bs4 import BeautifulSoup
driver = webdriver.Chrome()
driver.get("https://www.adidas.pl/search?q=ultraboost")
source = driver.page_source
driver.quit()
soup = BeautifulSoup(source, 'html.parser')
如果您不希望出现 chrome 选项卡
from selenium import webdriver
from bs4 import BeautifulSoup
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get("https://www.adidas.pl/search?q=ultraboost")
source = driver.page_source
driver.quit()
soup = BeautifulSoup(source, 'html.parser')
推荐阅读
- blazor - Blazor 自定义身份验证状态提供程序
- android - 'npx react-native bundle --platform android --dev false...' 为什么我每次都需要运行这个来更新我的发布 APK?
- react-native - 来自函数的 React Native useState 更改不会重新渲染组件
- toggle - 手风琴关闭问题
- reactjs - 如何隐藏 Ant Design 4 日期选择器年份?
- javascript - 为多个 AJAX 调用创建动态变量 (SharePoint Online)
- ruby - Daru::Dataframe 是否有一种本机方法可以根据向量拆分标准将一行拆分为多行?
- ssl - 无法为 SSL/TLS 安全通道 .net 核心建立信任关系
- javascript - Javascript DOM 元素
- arrays - 如何为 SwiftUI 新闻应用设置模型