【发布时间】:2021-03-05 08:41:40
【问题描述】:
我有一个脚本,它使用 beautifulSoup 包从网站列表中抓取数据,并使用 pandas 和 xlsxwriter 包保存在 excel 文件中。
我想要的是能够根据需要格式化 excel 文件,例如 列的宽度
但是当我运行脚本时它崩溃并显示以下错误。
AttributeError: 'NoneType' object has no attribute 'write'
代码:
import pandas as pd
import requests
from bs4 import BeautifulSoup
import xlsxwriter
def scrap_website():
url_list = ["https://www.bayt.com/en/international/jobs/executive-chef-jobs/",
"https://www.bayt.com/en/international/jobs/head-chef-jobs/",
"https://www.bayt.com/en/international/jobs/executive-sous-chef-jobs/"]
joineddd = []
for url in url_list:
soup = BeautifulSoup(requests.get(url).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'])
for link in links:
s = BeautifulSoup(requests.get(link).content, "lxml")
### update Start ###
alldd = dict()
alldd['link'] = link
dd_div = [i for i in s.select("div[class='card-content is-spaced'] div")
if ('<dd>' in str(i) ) and ( "<dt>" in str(i))]
for div in dd_div:
k = div.select_one('dt').get_text(';', True)
v = div.select_one('dd').get_text(';', True)
alldd[k] = v
### update End ###
joineddd.append(alldd)
# result
df = pd.DataFrame(joineddd)
df_to_excel = df.to_excel(r"F:\\AIenv\web_scrapping\\jobDesc.xlsx", index = False, header=True)
workbook = xlsxwriter.Workbook(df_to_excel)
worksheet = workbook.add_worksheet()
worksheet.set_column(0, 0,50)
workbook.close()
错误在哪里以及如何解决?
【问题讨论】:
-
仅供参考,“废品”是指扔掉。我想你的意思是刮。
-
是的,谢谢你对我的错误有什么建议吗?
-
在您的代码中,
df未声明。我想这是来自抓取数据的熊猫数据框。对吗? -
@JaybePark 我的错误我在这里粘贴代码时将其删除
标签: python pandas beautifulsoup xlsxwriter