我是 Python 编程的初学者,我正在练习从网站上抓取不同的值。我已经从特定网站提取了项目,现在想将它们写入 .xls 文件。
整个网页有 714 条记录,包括重复记录,但由于 zip() 函数在最小列表耗尽时停止,因此 Excel 表仅显示 707 条记录。这里最小的列表是电子邮件列表。因此,由于 zip() 函数的属性,它变得筋疲力尽并且迭代停止。我什至在 if 条件下对没有电子邮件地址的记录进行了检查,以便它显示“无电子邮件地址”但仍然相同的结果显示为 704 且有重复记录。请告诉我哪里出错了,如果可能的话,建议如何删除重复记录并在没有电子邮件的地方显示“无电子邮件地址”。
from bs4 import BeautifulSoup as bs
import pandas as pd
res = 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 表
墨色风雨
相关分类