第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 中的 Pandas 模塊將來自網(wǎng)站的提取項目寫入具有不同長度列表的 .xls 表

使用 Python 中的 Pandas 模塊將來自網(wǎng)站的提取項目寫入具有不同長度列表的 .xls 表

守著一只汪 2021-12-21 16:20:21
我是 Python 編程的初學(xué)者,我正在練習(xí)從網(wǎng)站上抓取不同的值。我已經(jīng)從特定網(wǎng)站提取了項目,現(xiàn)在想將它們寫入 .xls 文件。整個網(wǎng)頁有 714 條記錄,包括重復(fù)記錄,但由于 zip() 函數(shù)在最小列表耗盡時停止,因此 Excel 表僅顯示 707 條記錄。這里最小的列表是電子郵件列表。因此,由于 zip() 函數(shù)的屬性,它變得筋疲力盡并且迭代停止。我什至在 if 條件下對沒有電子郵件地址的記錄進(jìn)行了檢查,以便它顯示“無電子郵件地址”但仍然相同的結(jié)果顯示為 704 且有重復(fù)記錄。請告訴我哪里出錯了,如果可能的話,建議如何刪除重復(fù)記錄并在沒有電子郵件的地方顯示“無電子郵件地址”。from bs4 import BeautifulSoup as bsimport pandas as pdres = requests.get('https://www.raywhite.com/contact/?type=People&target=people&suburb=Sydney%2C+NSW+2000&radius=50%27%27&firstname=&lastname=&_so=contact', headers = {'User-agent': 'Super Bot 9000'})soup = bs(res.content, 'lxml')names=[]positions=[]phone=[]emails=[]links=[l1['href'] for l1 in soup.select('.agent-name a')]nlist = soup.find_all('li', class_='agent-name')plist= soup.find_all('li',class_='agent-role')phlist = soup.find_all('li', class_='agent-officenum')elist = soup.find_all('a',class_='val withicon')for n1 in nlist:    names.append(n1.text)for p1 in plist:    positions.append(p1.text)for ph1 in phlist:    phone.append(ph1.text)for e1 in elist:    emails.append(e1.get('href') if e1.get('href') is not None else 'No Email address')df = pd.DataFrame(list(zip(names,positions,phone,emails,links)),columns=['Names','Position','Phone','Email','Link'])df.to_excel(r'C:\Users\laptop\Desktop\RayWhite.xls', sheet_name='MyData2', index = False, header=True)excel表看起來像這樣,我們可以看到最后的記錄名稱,但它的電子郵件地址不匹配:雷白 Excel 表
查看完整描述

1 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗 獲得超6個贊

看起來您正在執(zhí)行許多 find_all 操作,然后將它們拼接在一起。我的建議是做一個 find_all 然后迭代它。當(dāng)所有數(shù)據(jù)都在一個地方時,它可以更容易地構(gòu)建數(shù)據(jù)框的列。


我已更新以下代碼以成功提取鏈接而不會出錯。對于任何代碼,都有多種方法可以執(zhí)行相同的任務(wù)。這可能不是最優(yōu)雅的,但它確實完成了工作。


import requests

from bs4 import BeautifulSoup 

import pandas as pd


r    = requests.get('https://www.raywhite.com/contact/?type=People&target=people&suburb=Sydney%2C+NSW+2000&radius=50%27%27&firstname=&lastname=&_so=contact', headers = {'User-agent': 'Super Bot 9000'})

soup = BeautifulSoup(r.text, 'html.parser')


get_cards = soup.find_all("div",{"class":"card horizontal-split vcard"})


agent_list = []


for item in get_cards:

    name      = item.find('li', class_='agent-name').text

    position  = item.find('li', class_='agent-role').text

    phone     = item.find('li', class_='agent-officenum').text

    link      = item.find('li', class_='agent-name').a['href']


    try:

        email = item.find('a',class_='val withicon')['href'].replace('mailto:','')

    except:

        email = 'No Email address'

    agent_list.append({'name':name,'position':position,'email':email,'link':link})


df = pd.DataFrame(agent_list)


以上是我為創(chuàng)建數(shù)據(jù)框而放在一起的一些示例代碼。這里的關(guān)鍵是做一個 find_all"class":"card horizontal-split vcard"}


希望有所幫助。


干杯,亞當(dāng)


查看完整回答
反對 回復(fù) 2021-12-21
  • 1 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號