Web scraper / CSV未以正确的格式保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web scraper / CSV未以正确的格式保存相关的知识,希望对你有一定的参考价值。

我制作的网络刮板效果很好。但是csv文件没有正确的配置。我认为csv_writer.writerow([])的位置有问题还是整个for陈述有误?我想像这样写:"header","source","text"

from bs4 import BeautifulSoup
import requests
from html.parser import HTMLParser
import csv


source = requests.get('http://trenertadej.si/pocep-je-osnovna-vaja-za-noge/').text

soup = BeautifulSoup(source,'html.parser')

csv_file = open('novi.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['header','source','text'])#column names,headers to my csv file 

div = soup.find('div',class_="fusion-column-wrapper")# to je iskalno polje kjer iščem vse elemente...



try:
    for h in soup.find_all('h2'):
        header = h.text
        print(header)
        print()
        #exit()
        #csv_writer.writerow([header])
except Exception as e:
    p = None



try:
    for img_source in soup.find('div',class_="fusion-column-wrapper").find_all('img'):
            source = img_source['src']
            print(source)
            #exit()
            #csv_writer.writerow([source])
except Exception as e:
        p = None


try:
    for p in soup.find_all('p'):
        text = p.text
        print(text)
        #exit()
        #csv_writer.writerow([text])
except Exception as e:
    p = None


csv_file.close()
答案
顾名思义,

csvwriter.writerow()方法应该写一行值。您在这里尝试做的(我假设是)分别为每一列编写所有值。我建议将代码完全重构为小的函数,在该函数中首先解析数据,将其存储到适当的数据结构中(一个列表列表,其中每个列表代表每一行的值应足够),然后将其打印到csv 。

以上是关于Web scraper / CSV未以正确的格式保存的主要内容,如果未能解决你的问题,请参考以下文章

身份验证背后的 Web Scraper

如何重新格式化 CSV 文件以匹配正确的 CSV 格式

glPolygonMode 未以正确模式呈现

Redshift 连接未以正确方式关闭

节点中的 jstoxml 转换器模块未以正确的结构解析数据

简易数据分析 09 | Web Scraper 自动控制抓取数量 & Web Scraper 父子选择器