【问题标题】:how to append multiple items to a list in python如何将多个项目附加到python中的列表
【发布时间】:2021-02-01 09:59:18
【问题描述】:

我有一个列表,当我尝试添加系统崩溃并显示以下错误时,我想使用 python 将多个项目附加到它:

我已经试过append()函数extend()函数同样的崩溃和错误。


TypeError                                 Traceback (most recent call last)
<ipython-input-24-1e9480855366> in <module>
    121
    122 
--> 123     joineddd.extend(link,jobdesc,alldd)
    124 
    125 

TypeError: extend() takes exactly one argument (3 given)

代码:

import time

import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(
    requests.get("https://www.bayt.com/en/international/jobs/executive-chef-jobs/").content,
    "lxml"
)

links = []
for a in soup.select("h2.m0.t-regular a"):
    if a['href'] not in links:
        links.append("https://www.bayt.com"+ a['href'])

joineddd = []

for link in links:
    print(link)
    s = BeautifulSoup(requests.get(link).content, "lxml")
    jobdesc=s.select_one("div[class='card-content is-spaced'] p")
    print(jobdesc.text)
    alldt = [dt.text for dt in s.select("div[class='card-content is-spaced'] dt")]
    dt_Job_location =              alldt[0]
    dt_Job_Company_Industry =      alldt[1]
    dt_Job_Company_Type =          alldt[2]
    if len(alldt[3])>0:
        dt_Job_Job_Role =              alldt[3]
    elif len(dt_Job_Employment_Type)>0:
        dt_Job_Employment_Type =       alldt[4]
    
    alldd = [dd.text for dd in s.select("div[class='card-content is-spaced'] dd")]
    dd_job_location =             alldd[0]
    dd_job_Company_Industry =     alldd[1]
    dd_job_Company_Type =         alldd[2]
    if len(alldd[3])>0:
        dd_job_Job_Role =             alldd[3]
    elif len(dd_job_Employment_Type)>0:
        dd_job_Employment_Type =      alldd[4]
    
    print(f"{dt_Job_location}:{dd_job_location}\n{dt_Job_Company_Industry}:{dd_job_Company_Industry}\n\n")
    
    print("-" * 80) 


    
    joineddd.extend(link,jobdesc,alldd)

预期结果:

[link,description,location,Company_Industry,Company_Type,Job_Role,Employment_Type ]

【问题讨论】:

    标签: python list beautifulsoup web-crawler


    【解决方案1】:

    您可以使用list.extend 方法,但在项目周围使用方括号,如下所示:

    list = [1,2,3]
    
    list.extend([4,5])
    
    print(list)
    
    >> returns 1,2,3,4,5
    

    【讨论】:

      【解决方案2】:

      对于扩展功能,您需要提供一个 list/touple/dict/set 来添加多个项目。

      喜欢:-

      joineddd.extend([link,jobdesc,alldd])
      

      【讨论】:

        【解决方案3】:
        import time
        
        import requests
        from bs4 import BeautifulSoup
        
        soup = BeautifulSoup(
            requests.get("https://www.bayt.com/en/international/jobs/executive-chef-jobs/").content,
            "lxml"
        )
        
        links = []
        for a in soup.select("h2.m0.t-regular a"):
            if a['href'] not in links:
                links.append("https://www.bayt.com"+ a['href'])
        
        joineddd = []
        
        for link in links:
            print(link)
            s = BeautifulSoup(requests.get(link).content, "lxml")
            jobdesc=s.select_one("div[class='card-content is-spaced'] p")
            print(jobdesc.text)
            alldt = [dt.text for dt in s.select("div[class='card-content is-spaced'] dt")]
            dt_Job_location =              alldt[0]
            dt_Job_Company_Industry =      alldt[1]
            dt_Job_Company_Type =          alldt[2]
            if len(alldt[3])>0:
                dt_Job_Job_Role =              alldt[3]
            elif len(dt_Job_Employment_Type)>0:
                dt_Job_Employment_Type =       alldt[4]
            
            alldd = [dd.text for dd in s.select("div[class='card-content is-spaced'] dd")]
            dd_job_location =             alldd[0]
            dd_job_Company_Industry =     alldd[1]
            dd_job_Company_Type =         alldd[2]
            if len(alldd[3])>0:
                dd_job_Job_Role =             alldd[3]
            elif len(dd_job_Employment_Type)>0:
                dd_job_Employment_Type =      alldd[4]
            
            print(f"{dt_Job_location}:{dd_job_location}\n{dt_Job_Company_Industry}:{dd_job_Company_Industry}\n\n")
            
            print("-" * 80) 
        
        
            
            joineddd.extend([link,jobdesc,alldd])
        

        数据框:

        import pandas as pd
        import numpy as np
        array1 = ["value1", "value2"]
        array2 = ["value1"]
        
        df = dict( A = np.array(array1), B = np.array(array2 ) )
        
        _df = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in df.items() ]))
        
        
        print(_df)
        _df.to_csv("filename.csv", index=False, encoding="utf-8")
        

        输出:

                A       B
        0  value1  value1
        1  value2     NaN
        

        【讨论】:

        • 如何将此列表 joineddd 添加到数据框?它必须有 7 列
        • 写入excel或csv文件?
        • 写入 csv 文件请注意,并非所有标题都包含值,因此某些记录可以有 1 或 2 列作为空值
        猜你喜欢
        • 2023-01-07
        • 1970-01-01
        • 2013-08-07
        • 2013-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-12
        • 2019-03-13
        相关资源
        最近更新 更多