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:
Fungsi get_data sebenarnya hanya perlu dipanggil sekali sahaja, tidak perlu panggil dua kali
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()
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')
Pertama sekali, tidak perlu menggunakan modul
.csv
untuk memenuhi keperluan andacsv
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 menggunakanTAB
sebagai pemisah (pempisah), dan kemudian terus menggunakanwith open(...) as fh
untuk menulisSelain itu, terdapat dua masalah kecil dengan kod anda:
Fungsi
get_data
sebenarnya hanya perlu dipanggil sekali sahaja, tidak perlu panggil dua kaliTerdapat garis miring tambahan dalam url
/
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: