首页 > 解决方案 > 两个几乎相同的代码,一个有效,另一个无效

问题描述

我不知道为什么第一个代码有效,但第二个无效。在“阿迪达斯”代码之后,我得到“连接中止,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')

标签: pythonweb-scrapingbeautifulsoup

解决方案


您可以使用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')

推荐阅读