新手在这里
在我下面的代码中,我正在抓取某些HTML数据的URL列表,然后将其写入csv文件,每行包含每个URL的数据。代码还检查URL是否有URLError或HTMLError,在这种情况下,它将其打印到控制台。但是,我不想将“URL错误”或“HTML错误”打印到控制台,而是将其传递到csv文件,在第二列标记为“错误报告”(其中“ErrorReport”在“row =”行中)。这样,我就可以查看csv文件,看看哪些URL导致了错误。
import requests
import bs4
import lxml
import pandas as pd
from urllib.request import urlopen
from urllib.error import HTTPError
from urllib.error import URLError
import csv
def getTitle(soup):
return soup.find('title').text.strip()
urlList = ["https://stackoverflow.com"]
with open('output.csv', 'w', newline='') as f_output:
csv_output = csv.writer(f_output)
csv_output.writerow(['Title', Error Report])
for url in urlList:
try:
html = urlopen(url)
except HTTPError:
print("HTML Error")
except URLError:
print("URL Error")
else:
soup = bs4.BeautifulSoup(html.read(), 'html.parser')
row = [ErrorReport, getTitle(soup)]
print(row)
csv_output.writerow(row)
1条答案
按热度按时间h6my8fg21#
我会稍微调整一下你的剧本:首先将所有数据收集到一个结构中,如列表,然后从这个列表创建一个DataFrame,然后您可以将DataFrame保存为CSV文件:
图纸:
并保存
data.csv
: