python - 怎样把数据分列写入csv呢?用下标可以实现目的吗?
黄舟
黄舟 2017-04-18 09:34:28
0
3
893
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(3)
巴扎黑

Pertama sekali, tidak perlu menggunakan modul csv untuk memenuhi keperluan anda csv menggunakan koma separuh lebar untuk memisahkan lajur yang berbeza secara lalai, tetapi jika kandungan satu lajur mempunyai separuh lebar. koma, excel membaca agak janggal I Adalah disyorkan untuk menggunakan TAB sebagai pemisah (pempisah), dan kemudian terus menggunakan with open(...) as fh untuk menulis

.

Selain itu, terdapat dua masalah kecil dengan kod anda:

  1. Fungsi get_data sebenarnya hanya perlu dipanggil sekali sahaja, tidak perlu panggil dua kali

  2. Terdapat garis miring tambahan dalam url/

# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup

user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
URL = 'http://finance.qq.com'


def get_data(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    soup = soup.find('p', {'id': 'listZone'}).findAll('a')
    return soup


def main():
    with open("hello.tsv", "w") as fh:
        fh.write("url\ttitile\n")
        for item in get_data(URL + "/gdyw.htm"):
            fh.write("{}\t{}\n".format(URL + item.get("href"), item.get_text()))


if __name__ == "__main__":
    main()

Keputusan:

左手右手慢动作

Oleh kerana anda menulis csvrow1 dahulu dan kemudian csvrow2, yang menghasilkan hasil ini anda harus melintasi csvrow1 dan 2 pada masa yang sama, seperti ini:

for i in zip(csvrow1, csvrow2):
    csvfile.write(i[0] + ',' + i[1] + '\n')
伊谢尔伦
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import csv


user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'

def get_data(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    soup = soup.find('p', {'id': 'listZone'}).findAll('a')
    return soup
urls = []
titles = []

for url in get_data('http://finance.qq.com/gdyw.htm'):
    urls.append('http://finance.qq.com/'+url.get('href'))
for title in get_data('http://finance.qq.com/gdyw.htm'):
    titles.append(title.get_text())
data = []
for url, title in zip(urls, titles):
    row = {
        'url': url,
        'title': title

    }
    data.append(row)
with open('a.csv', 'w') as csvfile:
    fieldnames = ['url', 'title']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(data)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan