【问题标题】:How do I get a list of redirect urls from Dell.com如何从 Dell.com 获取重定向 URL 列表
【发布时间】:2020-05-12 05:00:25
【问题描述】:

我正在从事一个网络抓取项目,并希望从戴尔的网站获取产品列表。我找到了这个链接 (https://www.dell.com/support/home/us/en/04/products/),它打开了一个带有产品类别列表的框(实际上只是重定向 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()

有没有办法获得这些重定向网址?我基本上是在尝试为他们的产品制作自己的站点地图,以便我可以抓取每个产品的详细信息。谢谢

【问题讨论】:

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

标签: python web-scraping get python-requests


【解决方案1】:

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

在Firefox/Chrome(标签:Network)中使用DevTools,我发现它是从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

所以我用它来获取链接。

您可能需要更改 url 中的 country=pl&language=pl 才能以不同的语言获取它。


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'])

顺便说一句: 其他方法是使用Selenium 来控制可以运行JavaScript 的真实网络浏览器。

【讨论】:

    【解决方案2】:

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

    Beginner guide to web scraping

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-24
      • 2016-12-11
      • 1970-01-01
      • 2011-03-22
      • 2015-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多