首页 > 解决方案 > 尝试使用 python3 和 Beautiful Soup 为戴尔驱动程序创建网络爬虫

问题描述

我正在尝试创建一个网络爬虫来从他们的网站上获取有关戴尔驱动程序的信息。显然,它在他们的网站上使用 java 将驱动程序的数据加载到网页。我很难从网页上获取驱动程序信息。这是我到目前为止拼凑起来的。

from bs4 import BeautifulSoup
import urllib.request
import json

resp = urllib.request.urlopen("https://www.dell.com/support/home/en-us/product-support/product/precision-15-5520-laptop/drivers")
soup = BeautifulSoup(resp, 'html.parser', from_encoding=resp.info().get_param('charset'))

到目前为止,这些都没有尝试为驱动程序获取数据:

data = json.loads(soup.find('script', type='text/preloaded').text)

data = json.loads(soup.find('script', type='application/x-suppress').text)

data = json.loads(soup.find('script', type='text/javascript').text)

data = json.loads(soup.find('script', type='application/ld+json').text)

我对 python 不是很熟练,我一直在寻找所有的东西,试图拼凑一些有用的东西。任何帮助我在我的努力中取得进一步进展的帮助将不胜感激。

标签: python-3.xweb-scrapingbeautifulsoup

解决方案


我明白了

from selenium import webdriver
import time 
from bs4 import BeautifulSoup

driver = webdriver.Chrome('C:/temp/chromedriver_win32/chromedriver.exe')

driver.get('https://www.dell.com/support/home/en-us/product-support/product/precision-15-5520-laptop/drivers')

time.sleep(3)

element = driver.find_element_by_xpath("//button[contains(.,'Show all')]").click();

page = driver.page_source

driver.close()

soup = BeautifulSoup(page,'html.parser')

results = soup.find(id='downloads-table')

results2 = results.find_all(class_='dl-desk-view')
results3 = results.find_all(class_='details-control sorting_1')
results4 = results.find_all(class_='details-control')
results5 = results.find_all(class_='btn-download-lg btn btn-sm no-break text-decoration-none dellmetrics-driverdownloads btn-outline-primary')

for results2, results3, results4, results5 in zip(results2, results3, results4, results5):
   print(results2, results3, results4, results5)

推荐阅读