首页 > 解决方案 > 如何从多个 For 循环中将项目添加到单个字典?

问题描述

我最近开始学习 Python。我基本上在做的是从网站上抓取数据并添加到字典列表中,这就是最终结构的样子:

这基本上是我的抓取代码。我不得不使用two for loops,因为要定位的元素存在于网页上的不同位置(一个用于标题,另一个用于描述

jobslist=[]
    for item in title:
        MainTitle = item.text
        mydict = {
        'title' : MainTitle,
        }
    jobslist.append(mydict)

for i in link:
    links = i['href']
    r2 = requests.get(links, headers = headers)
    soup2 = BeautifulSoup(r2.content,'lxml')
    entry_content = soup2.find('div', class_ ='entry-content')
    mydict= {
    'description' : entry_content
    }
jobslist.append(mydict) 

最后保存到 CSV(使用的熊猫库,其中 pd 是导入)

df = pd.DataFrame(jobslist)
df.to_csv('data.csv') 

但是,输出很奇怪。描述添加在标题下方,而不是并排添加。这是截图: 在此处输入图像描述

如何并排对齐?

标签: pythoncsvbeautifulsoup

解决方案


免责声明:很难给出完美的答案,因为您的代码不可重现;我不知道你的约会是什么样的,也不知道你想做什么,所以我无法真正测试任何东西。

根据我对您的代码的理解,字典似乎完全没有必要。您有一个标题列表和一个描述列表。随它吧:

titles_list = []
    for item in title:
        titles_list.append(item.text)

descriptions_list = []
for i in link:
    links = i['href']
    r2 = requests.get(links, headers = headers)
    soup2 = BeautifulSoup(r2.content,'lxml')
    entry_content = soup2.find('div', class_ ='entry-content')
    descriptions_list.append(entry_content)

df = pd.DataFrame(data = {'title': titles_list, 'description': descriptions_list}) # here we use a dict of lists instead of a list of dicts
df.to_csv('data.csv') 

推荐阅读