Python 3.x ';列表';对象没有属性';超时';并且只打印表中的第一项

Python 3.x ';列表';对象没有属性';超时';并且只打印表中的第一项,python-3.x,web-scraping,beautifulsoup,Python 3.x,Web Scraping,Beautifulsoup,我正在尝试从URL列表中提取一个表。当我只输入一个URL时,它只打印出表中的第一个项目,当我向列表中添加更多URL时,我得到错误消息“list”对象没有属性“timeout”。获取其余项目并添加更多URL的最佳方法是什么? 下面是我正在运行的代码 import time, random, csv, bs4, requests, io import pandas as pd timeDelay = random.randrange(5, 20) from urllib.request import

我正在尝试从URL列表中提取一个表。当我只输入一个URL时,它只打印出表中的第一个项目,当我向列表中添加更多URL时,我得到错误消息“list”对象没有属性“timeout”。获取其余项目并添加更多URL的最佳方法是什么? 下面是我正在运行的代码

import time, random, csv, bs4, requests, io
import pandas as pd
timeDelay = random.randrange(5, 20)
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_urls = [
"https://www.lonza.com/products-services/bio-research/electrophoresis-of-nucleic-acids-and-proteins/nucleic-acid-electrophoresis/precast-gels-for-dna-and-rna-analysis/truband-gel-anchors.aspx",
"https://www.lonza.com/products-services/bio-research/transfection/nucleofector-kits-for-primary-cells/nucleofector-kits-for-primary-epithelial-cells/nucleofector-kits-for-human-mammary-epithelial-cells-hmec.aspx",
"https://www.lonza.com/products-services/bio-research/transfection/nucleofector-kits-for-primary-cells/nucleofector-kits-for-primary-neural-cells/nucleofector-kits-for-mammalian-glial-cells.aspx",
]
uClient = uReq(my_urls)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")

containers = page_soup.findAll('tbody')


product_name_list =[]
cat_no_list = []
size_list = []
price_list =[]

for container in containers:
    if (len(container) > 0):
    #try:
        title_container = container.findAll('td')
        Product_name = title_container[0].text.strip()
        product_name_list.append(Product_name)

        CatNo_container = container.findAll('td')
        CatNo = CatNo_container[1].text.strip()
        cat_no_list.append(CatNo)

        #Size_container = container.findAll('div',{'class':'col-xs-2 noPadding'})
        #Size = Size_container[0].text.strip()
        #size_list.append(Size)

        Price_container = container.findAll('td')
        Price = Price_container[4].text.strip()
        price_list.append(Price)

        print('Product_name: '+ Product_name)
        print('CatNo: ' + CatNo)
        print('Size: ' + 'N/A')
        print('Price: ' + Price)
        print(" ")
        time.sleep(timeDelay)

您正在这里传递一个列表,
uClient=uReq(my\u URL)
作为
my\u URL
,其中需要字符串
您需要传递列表的单个元素,即字符串。

以下是适用于多个URL的已编辑代码

更新的代码(用于获取所有项目):


你知道为什么它只打印表的第一项而不打印整个表吗?@user9269112我猜你无法正确理解包含数据的标记。在内部,每个项目都在一个标记内。您需要再次迭代项目以获得所需内容。我已经更新了代码来实现我刚才所说的。
import time, random, csv, bs4, requests, io
import pandas as pd
timeDelay = random.randrange(5, 20)
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup

my_urls = [
"https://www.lonza.com/products-services/bio-research/electrophoresis-of-nucleic-acids-and-proteins/nucleic-acid-electrophoresis/precast-gels-for-dna-and-rna-analysis/truband-gel-anchors.aspx",
"https://www.lonza.com/products-services/bio-research/transfection/nucleofector-kits-for-primary-cells/nucleofector-kits-for-primary-epithelial-cells/nucleofector-kits-for-human-mammary-epithelial-cells-hmec.aspx",
"https://www.lonza.com/products-services/bio-research/transfection/nucleofector-kits-for-primary-cells/nucleofector-kits-for-primary-neural-cells/nucleofector-kits-for-mammalian-glial-cells.aspx",
]

for url in my_urls:
    print("URL using: ", url)
    uClient = uReq(url)
    page_html = uClient.read()
    uClient.close()
    page_soup = soup(page_html, "html.parser")

    containers = page_soup.findAll('tbody')


    product_name_list =[]
    cat_no_list = []
    size_list = []
    price_list =[]

    for container in containers:
        if (len(container) > 0):
        #try:
            items = container.findAll('tr')
            for item in items:
                item = item.text.split('\n')

                Product_name = item[1]
                product_name_list.append(Product_name)

                CatNo = item[2]
                cat_no_list.append(CatNo)

                #Size_container = container.findAll('div',{'class':'col-xs-2 noPadding'})
                #Size = Size_container[0].text.strip()
                #size_list.append(Size)

                Price = item[6]
                price_list.append(Price)

                print('Product_name: '+ Product_name)
                print('CatNo: ' + CatNo)
                print('Size: ' + 'N/A')
                print('Price: ' + Price)
                print(" ")
            time.sleep(timeDelay)