Python 如何从Dell.com获取重定向URL列表

Python 如何从Dell.com获取重定向URL列表,python,web-scraping,get,python-requests,Python,Web Scraping,Get,Python Requests,我正在做一个网页清理项目,想从戴尔网站上获得一份产品清单。我找到了这个链接(),它会弹出一个包含产品类别列表的框(实际上只是重定向URL。如果没有找到,请单击“浏览所有产品”按钮)。我尝试使用Python请求获取页面并将文本保存到一个要解析的文件中,但响应不包含任何类别/重定向URL。我的代码是最基本的: import requests url = "https://www.dell.com/support/home/us/en/04/products/" page = requests.ge

我正在做一个网页清理项目,想从戴尔网站上获得一份产品清单。我找到了这个链接(),它会弹出一个包含产品类别列表的框(实际上只是重定向URL。如果没有找到,请单击“浏览所有产品”按钮)。我尝试使用Python请求获取页面并将文本保存到一个要解析的文件中,但响应不包含任何类别/重定向URL。我的代码是最基本的:

import requests

url = "https://www.dell.com/support/home/us/en/04/products/"
page = requests.get(url)

with open("laptops.txt", "w", encoding="utf-8") as outf:
    outf.write(page.text)
    outf.close()

有没有办法获取这些重定向URL?我基本上是在尝试为他们的产品制作自己的网站地图,这样我就可以大致了解每一个产品的细节。感谢您尝试使用selenium chrome驱动程序,它有助于处理网站上的动态数据,还具有单击按钮、处理页面刷新等功能


尝试使用selenium chrome驱动程序,它有助于处理网站上的动态数据,还具有单击按钮、处理页面刷新等功能


此页面使用JavaScript获取和显示这些链接-但是
请求
/
urllib
美化组
/
lxml
无法运行
JavaScript

使用
Firefox
/
Chrome
(选项卡:
Network
)中的
DevTools
),我发现它是从url读取的

所以我用它来获取链接

您可能必须更改url中的
country=pl&language=pl
,才能获得不同语言的url




顺便说一句:另一种方法是使用
Selenium
来控制可以运行JavaScript的真实web浏览器。

此页面使用JavaScript来获取和显示这些链接-但是
请求
/
urllib
BeautifulSoup
/
lxml
无法运行
JavaScript

使用
Firefox
/
Chrome
(选项卡:
Network
)中的
DevTools
),我发现它是从url读取的

所以我用它来获取链接

您可能必须更改url中的
country=pl&language=pl
,才能获得不同语言的url




顺便说一句:另一种方法是使用
Selenium
控制可以运行JavaScript的真实web浏览器。

如果页面使用JavaScript添加元素,那么您无法通过
请求
美化组
获得它,因为它们无法运行JavaScript。您可能必须使用
Selenium
来控制可以运行JavaScript的真实web浏览器。或者,如果javascript从其他URL读取数据,您可以在Firefox/Chrome(选项卡:网络)中签入DevTools,然后您可以将此URL用于请求。如果页面使用javascript添加元素,则您无法通过
请求和
美化组获得它,因为它们无法运行javascript。您可能必须使用
Selenium
来控制可以运行JavaScript的真实web浏览器。或者,如果javascript从其他URL读取数据,您可以在Firefox/Chrome(选项卡:网络)中签入DevTools,然后您可以在请求中使用此URL。
import requests
from bs4 import BeautifulSoup as BS

url = "https://www.dell.com/support/components/productselector/allproducts?category=all-products/esuprt_&country=pl&language=pl&region=emea&segment=bsd&customerset=plbsd1&openmodal=true&_=1589265310743"
response = requests.get(url)

soup = BS(response.text, 'html.parser')

all_items = soup.find_all('a')
for item in all_items:
    print(item.text, item['href'])