【问题标题】:Want to get the text from the li tag using selenium想要使用 selenium 从 li 标签中获取文本
【发布时间】:2021-06-13 06:58:19
【问题描述】:

我想要来自 li 标记的文本,它是产品的规范,但是当我使用 driver.find_element_by_css_selector 搜索时,它会给出错误,因为找不到路径。所以无法获取文本。

enter code here
import urllib.request
from bs4 import BeautifulSoup
import csv
import os
from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver.common.keys import Keys
import pandas as pd
import time
chrome_path =r'C:/Users/91940/AppData/Local/Programs/Python/Python39/Scripts/chromedriver.exe'
driver = webdriver.Chrome(executable_path=chrome_path)
driver.implicitly_wait(10)
driver.get("https://www.lazada.sg/products/samsung-galaxy-watch3-bt-45mm-titanium- 
  i1156462257-s4537770883.html?search=1&freeshipping=1")
speci = driver.find_element_by_css_selector('data-spm-anchor- 
          id="a2o42.pdp_revamp.product_detail.i17.5fa031ceGZk42Z"') 

如何从 li 标记中获取文本。当我运行上面的代码时,它会给出错误“没有此类元素无法找到该元素”。

【问题讨论】:

    标签: python pandas selenium-webdriver web-scraping


    【解决方案1】:

    有防刮措施。如果这些不影响您,那么您可以使用 css 类来定位要循环的 li 元素,以及每个规范的标题/值:

    specs = [(i.find_element_by_css_selector('.key-title').text, i.find_element_by_css_selector('.key-value').text) for i in driver.find_elements_by_css_selector('.key-li')]
    

    您还可以对来自script tag 的所需信息进行正则表达式,然后使用requestsjson 解析出规范(还有其他信息,包括data 中包含的评论)

    import re, json
    
    r = requests.get("https://www.lazada.sg/products/samsung-galaxy-watch3-bt-45mm-titanium-i1156462257-s4537770883.html?search=1&freeshipping=1",
                     headers = {'User-Agent':'Mozilla/5.0'})
    html = r.text
    #html = driver.page_source
    
    data = json.loads(re.search(r'var __moduleData__ = (.*);', html).group(1))
    print(data['data']['root']['fields']['specifications'])
    

    【讨论】:

    猜你喜欢
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    相关资源
    最近更新 更多