鱼C论坛

 找回密码
 立即注册
查看: 1797|回复: 7

[已解决]字符串转化为列表

[复制链接]
发表于 2021-5-31 17:07:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
试了下把打印结果放到p_list[] 作为列表显示, 结果报错, AttributeError: 'list' object has no attribute 'text'。
麻烦看下要怎么修改?

from selenium import webdriver

wd = webdriver.Chrome(r'C:\Users\sesa395799\Downloads\chromedriver_win32\chromedriver.exe')

wd.get('https://www.digikey.cn/zh/products/category/resistors/2')
mainWindow = wd.current_window_handle

element = wd.find_element_by_css_selector("#header > div.header__top > div.header__search > div > div.searchbox-inner > div.searchbox-inner-searchtext > input")
list = ['12FR010E-N\n','MP930-15.0F-ND\n']

p_list = []

for i in [0,1]:
    element.send_keys(list[i])

    p_list = wd.find_elements_by_css_selector('#product-attributes > tbody > tr > td > div')
    print(p_list)

    wd.switch_to.window(mainWindow)
    element = wd.find_element_by_css_selector("#header > div.header__top > div.header__search > div > div.searchbox-inner > div.searchbox-inner-searchtext > input")

wd.quit()
最佳答案
2021-6-2 00:06:11
本帖最后由 suchocolate 于 2021-6-2 00:09 编辑
grey_lemon 发表于 2021-6-1 22:39
我试着 print(t_data),  不 print(data), 但是这样 inpt 里的元素就打印不出来了。。

from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.wait import WebDriverWait


def main():
    inpt = ['12FR010E-ND', 'CF1/4CT52R101J', 'MR40MB12.70R001JT', 'RNF18FTD1K00']
    browser = webdriver.Firefox()
    ip = "#header > div.header__top > div.header__search > div > div.searchbox-inner > div.searchbox-inner-searchtext > input"
    rs = "#product-attributes > tbody > tr > td > div"
    bt = "#header-search-button"
    browser.get('https://www.digikey.cn/zh/products/category/resistors/2')
    wait = WebDriverWait(browser, 10)
    wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, ip)))
    for s in inpt:
        t_data = []
        browser.switch_to.window(browser.current_window_handle)
        browser.find_element_by_css_selector(ip).send_keys(s)
        browser.find_element_by_css_selector(bt).click()
        try:
            wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, rs)))
            result = browser.find_elements_by_css_selector(rs)
            for r in result:
                if r.text:
                    t_data.append(r.text)
            print(s, t_data)
        except Exception as e:
            print(e)


if __name__ == "__main__":
    main()
只要拿到了数据,怎样print,怎样转换都看你自己的需求。
我觉得有空你多看看字符串,字典什么的基本操作,这些基本功比爬虫简单多了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-1 08:27:17 | 显示全部楼层
没人回复, 顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-1 17:32:28 | 显示全部楼层
from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.wait import WebDriverWait


def main():
    data = dict()
    inpt = ['12FR010E-ND', 'CF1/4CT52R101J', 'MR40MB12.70R001JT', 'RNF18FTD1K00']
    browser = webdriver.Firefox()
    ip = "#header > div.header__top > div.header__search > div > div.searchbox-inner > div.searchbox-inner-searchtext > input"
    rs = "#product-attributes > tbody > tr > td > div"
    bt = "#header-search-button"
    browser.get('https://www.digikey.cn/zh/products/category/resistors/2')
    wait = WebDriverWait(browser, 10)
    wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, ip)))
    for s in inpt:
        t_data = []
        browser.switch_to.window(browser.current_window_handle)
        browser.find_element_by_css_selector(ip).send_keys(s)
        browser.find_element_by_css_selector(bt).click()
        try:
            wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, rs)))
            result = browser.find_elements_by_css_selector(rs)
            for r in result:
                if r.text:
                    t_data.append(r.text)
            data[s] = t_data
        except Exception as e:
            print(e)
    print(data)


if __name__ == "__main__":
    main()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 22:17:41 | 显示全部楼层
谢谢!运行成功了。
但是结果是 inpt 里所有的元素都在一个dict里,怎么调整可以把inpt 里每个元素的结果单独打印?
inpt = ['12FR010E-ND', 'CF1/4CT52R101J', 'MR40MB12.70R001JT', 'RNF18FTD1K00']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 22:19:53 | 显示全部楼层

谢谢!运行成功了。
但是结果是 inpt 里所有的元素都在一个dict里,怎么调整可以把inpt 里每个元素的结果单独打印?
inpt = ['12FR010E-ND', 'CF1/4CT52R101J', 'MR40MB12.70R001JT', 'RNF18FTD1K00']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-1 22:39:14 | 显示全部楼层
我试着 print(t_data),  不 print(data), 但是这样 inpt 里的元素就打印不出来了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-6-2 00:06:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suchocolate 于 2021-6-2 00:09 编辑
grey_lemon 发表于 2021-6-1 22:39
我试着 print(t_data),  不 print(data), 但是这样 inpt 里的元素就打印不出来了。。

from selenium import webdriver
from selenium.webdriver import Firefox
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.wait import WebDriverWait


def main():
    inpt = ['12FR010E-ND', 'CF1/4CT52R101J', 'MR40MB12.70R001JT', 'RNF18FTD1K00']
    browser = webdriver.Firefox()
    ip = "#header > div.header__top > div.header__search > div > div.searchbox-inner > div.searchbox-inner-searchtext > input"
    rs = "#product-attributes > tbody > tr > td > div"
    bt = "#header-search-button"
    browser.get('https://www.digikey.cn/zh/products/category/resistors/2')
    wait = WebDriverWait(browser, 10)
    wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, ip)))
    for s in inpt:
        t_data = []
        browser.switch_to.window(browser.current_window_handle)
        browser.find_element_by_css_selector(ip).send_keys(s)
        browser.find_element_by_css_selector(bt).click()
        try:
            wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, rs)))
            result = browser.find_elements_by_css_selector(rs)
            for r in result:
                if r.text:
                    t_data.append(r.text)
            print(s, t_data)
        except Exception as e:
            print(e)


if __name__ == "__main__":
    main()
只要拿到了数据,怎样print,怎样转换都看你自己的需求。
我觉得有空你多看看字符串,字典什么的基本操作,这些基本功比爬虫简单多了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-6-2 05:05:09 | 显示全部楼层
suchocolate 发表于 2021-6-2 00:06
只要拿到了数据,怎样print,怎样转换都看你自己的需求。
我觉得有空你多看看字符串,字典什么的基 ...

好的,谢谢指导!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表