当前位置: 首页 > 知识库问答 >
问题:

使用CSS选择器从网页中提取数据-Selenium Python

戚俊美
2023-03-14

为了我的设备,我想从戴尔网站上提取一些日期。我试图使用urllib下载网页,但它受验证码保护,目前我无法绕过它。现在我使用Selenium打开浏览器,手动解决capthca问题,然后自动打开页面并提取日期。问题是css选择器返回的是一些奇怪的元素,而不是所需的输出

我的代码:

from selenium import webdriver
import time
driver = webdriver.Chrome()


def scrape(codes):
    dates = []
    for i in range(len(codes)):
        driver.get("https://www.dell.com/support/home/us/en/19/product-support/"
                   "servicetag/%s/warranty?ref=captchasuccess" % codes[i])

    # Solve captcha manually
        if i == 0:
            print("You now have 120\" seconds to solve the captcha")
            time.sleep(120)
            print("120\" Passed")
    # Extract data
        expdate = driver.find_element_by_css_selector("#printdivid > div > div.not-annotated.hover > table:nth-child(3) > tbody > tr > td:nth-child(3)")
        print(expdate)
    driver.close()

codes = ['1FMR762', '15FDBG2', '10V8YZ1']
scrape(codes)

预期产出:

June 22, 2018
October 15, 2017
April 19, 2017

给定输出:

<selenium.webdriver.remote.webelement.WebElement (session="d83af0f7a3a9c79307d2058f863a7ecb", element="0.21873872382745052-1")>
<selenium.webdriver.remote.webelement.WebElement (session="d83af0f7a3a9c79307d2058f863a7ecb", element="0.06836824093097027-1")>
<selenium.webdriver.remote.webelement.WebElement (session="d83af0f7a3a9c79307d2058f863a7ecb", element="0.6642161898702734-1")>

共有1个答案

国高杰
2023-03-14

查看API文档,find_element_by_css_selector函数返回一个WebElement对象。看见https://selenium-python.readthedocs.io/api.html.

在打印之前,需要将web元素内容转换为字符串,如Python中所述,以及如何从Selenium element WebElement object?获取文本?。

因此,将行print(expdate)更改为print(expdate.text)会有所帮助。

 类似资料:
  • 在我的硕士论文中,我正在探索通过web自动化从网站中提取数据的可能性。步骤如下: 登录网站(https://www.metal.com/Copper/201102250376) 输入用户名和密码 单击登录 将日期更改为2020年1月1日 刮取生成的表格数据,然后将其保存到csv文件中 用我电脑上的特定名称保存到特定文件夹 运行相同的序列,在同一浏览器窗口的新选项卡中下载其他材料的其他历史价格数据

  • 我正在尝试使用JSoup从网站上刮取一些内容。以下是我感兴趣的页面中的一些HTML内容示例: 我有兴趣获得页面中所有的列表(所以"Fizz","Buzz","Foo"和"Bar")。但是我不能只查询,因为他们到处都在使用类来装饰许多不同的元素。具体来说,我需要存在于元素中的所有。请注意,pbks可以包含0个pgs,pgs可以包含0个热词,热词可以包含1个其他热词。我有以下代码: 运行该代码将生成以

  • 本文向大家介绍Jsoup 使用CSS选择器选择元素,包括了Jsoup 使用CSS选择器选择元素的使用技巧和注意事项,需要的朋友参考一下 示例 您可以在此处找到支持的选择器的详细概述。

  • 问题内容: 实际上可以从网站开发中完全避免使用类。 我的问题是,与类选择器相比,数据选择器的效率如何? 一个简单的示例是比较对带有的元素与vs与的元素的查询。 该选择将检查值作为一个整体对String类应该被拆分。考虑到这一点,数据属性应该更快。 因此,为解决问题,在CSS的情况下,我们最好使用类选择器还是数据选择器?并且从javascript的角度来看,它会比?更有效。 问题答案: 我不会说这是

  • 问题内容: 使用Java,如何从给定的网页中提取所有链接? 问题答案: 将Java文件下载为纯文本/ html格式,并通过Jsoup或 html clean传递,两者相似,甚至可以用于解析格式错误的html 4.0语法,然后可以使用流行的HTML DOM解析方法,例如getElementsByName(“ a”)或在jsoup中它甚至很酷,您只需使用 并找到所有链接,然后使用 取自http://j

  • 本文向大家介绍python使用xslt提取网页数据的方法,包括了python使用xslt提取网页数据的方法的使用技巧和注意事项,需要的朋友参考一下 1、引言 在Python网络爬虫内容提取器一文我们详细讲解了核心部件:可插拔的内容提取器类gsExtractor。本文记录了确定gsExtractor的技术路线过程中所做的编程实验。这是第一部分,实验了用xslt方式一次性提取静态网页内容并转换成xml