鱼C论坛

 找回密码
 立即注册
查看: 2192|回复: 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 里的元素就打印不出来了。。

  1. from selenium import webdriver
  2. from selenium.webdriver import Firefox
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.common.keys import Keys
  5. from selenium.webdriver.firefox.options import Options
  6. from selenium.webdriver.support import expected_conditions as expected
  7. from selenium.webdriver.support.wait import WebDriverWait


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


  31. if __name__ == "__main__":
  32.     main()
复制代码

只要拿到了数据,怎样print,怎样转换都看你自己的需求。
我觉得有空你多看看字符串,字典什么的基本操作,这些基本功比爬虫简单多了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-6-1 08:27:17 | 显示全部楼层
没人回复, 顶一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


  8. def main():
  9.     data = dict()
  10.     inpt = ['12FR010E-ND', 'CF1/4CT52R101J', 'MR40MB12.70R001JT', 'RNF18FTD1K00']
  11.     browser = webdriver.Firefox()
  12.     ip = "#header > div.header__top > div.header__search > div > div.searchbox-inner > div.searchbox-inner-searchtext > input"
  13.     rs = "#product-attributes > tbody > tr > td > div"
  14.     bt = "#header-search-button"
  15.     browser.get('https://www.digikey.cn/zh/products/category/resistors/2')
  16.     wait = WebDriverWait(browser, 10)
  17.     wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, ip)))
  18.     for s in inpt:
  19.         t_data = []
  20.         browser.switch_to.window(browser.current_window_handle)
  21.         browser.find_element_by_css_selector(ip).send_keys(s)
  22.         browser.find_element_by_css_selector(bt).click()
  23.         try:
  24.             wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, rs)))
  25.             result = browser.find_elements_by_css_selector(rs)
  26.             for r in result:
  27.                 if r.text:
  28.                     t_data.append(r.text)
  29.             data[s] = t_data
  30.         except Exception as e:
  31.             print(e)
  32.     print(data)


  33. if __name__ == "__main__":
  34.     main()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 2021-6-1 22:39:14 | 显示全部楼层
我试着 print(t_data),  不 print(data), 但是这样 inpt 里的元素就打印不出来了。。
小甲鱼最新课程 -> https://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 里的元素就打印不出来了。。

  1. from selenium import webdriver
  2. from selenium.webdriver import Firefox
  3. from selenium.webdriver.common.by import By
  4. from selenium.webdriver.common.keys import Keys
  5. from selenium.webdriver.firefox.options import Options
  6. from selenium.webdriver.support import expected_conditions as expected
  7. from selenium.webdriver.support.wait import WebDriverWait


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


  31. if __name__ == "__main__":
  32.     main()
复制代码

只要拿到了数据,怎样print,怎样转换都看你自己的需求。
我觉得有空你多看看字符串,字典什么的基本操作,这些基本功比爬虫简单多了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,谢谢指导!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 05:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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