python-3.x - 尝试使用 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 不是很熟练,我一直在寻找所有的东西,试图拼凑一些有用的东西。任何帮助我在我的努力中取得进一步进展的帮助将不胜感激。
解决方案
我明白了
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)
推荐阅读
- java - AJAX 请求向 Java Spring 控制器发送空参数
- pandas - 按百分位级别对数据框进行分组
- java - 如何过滤 Hashmap 以使用 Java 8 流即时更新值?
- javascript - NPM 安装包:GeoFireX,谷歌云功能出错
- google-sheets - Powerbi & Google 表格实时同步
- java - Java 泛型类型绑定到具有特定注释的类
- javascript - 为什么在获取请求后出现“错误空响应”?
- flutter - 我可以从家里访问我的颤振,但无法从 Catalina OS 上的其他路径访问
- swift - 从 UICollectionViewCell 执行 segue 以显示详细信息屏幕不起作用
- javascript - 将可观察对象串联和并行组合以从多个 API 获取数据