如何在python中追加新的字符串元素?

时间:2017-07-28 11:35:32

标签: python string csv web-scraping

我正在从2个不同的网站抓取2个表格。 我想在我的代码中添加一个带有网页抓取文本的新列(在标题中称为WHEREFROM),我称之为" name"。

我的代码在这里:

from bs4 import BeautifulSoup
from selenium import webdriver
import time
import urllib2
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
from bs4 import BeautifulSoup
import re
import contextlib
import selenium.webdriver.support.ui as ui

filename=r'output.csv'

resultcsv=open(filename,"wb")
output=csv.writer(resultcsv, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1')
output.writerow(['TIME','FLIGHT','FROM','AIRLANE','AIRCRAFT','STATUS','WHEREFROM', 'ACTUALDATE']) 

def scrape(urls):
    browser = webdriver.Firefox()
    for url in urls:
        browser.get(url)
        html = browser.page_source
        soup=BeautifulSoup(html,"html.parser")
        table = soup.find('table', { "class" : "table table-condensed table-hover data-table m-n-t-15" })
        soup2=BeautifulSoup(html,"html.parser")
        name = soup2.find('div' , attrs={'class' : 'row m-t-l m-l-l'})
        datatable=[]
        for record in table.find_all('tr', class_="hidden-xs hidden-sm ng-scope"):
            temp_data = []
            for data in record.find_all("td"):
                temp_data.append(data.text.encode('latin-1'))
            newlist = filter(None, temp_data)
            datatable.append(newlist)
        print name
        output.writerows(datatable)

    resultcsv.close()
    time.sleep(10) 
    browser.close()

urls = ["https://www.flightradar24.com/data/airports/bud/arrivals", "https://www.flightradar24.com/data/airports/fco/arrivals"]
scrape(urls)
resultcsv.close()

如何在循环中执行此操作,如何正确执行此操作?因为在那之后我将这些数据写入csv,其中分隔符是;

但是在网页抓取表之后没有任何内容;在最后一篇文章中,所以我想我必须插入一个;在这最后一篇文章中也是如此?!

我在说这个:

"1:15 PM";" KL1975";"Amsterdam (AMS)-";"KLM";"B737 (PH-BGT) ";"Landed 1:01 PM"

用实际日期编辑(不工作,格式问题):

df = pd.DataFrame(newlist)
now = time.strftime('%d-%m-%Y')
df['ACTUALDATE'] = now
#df.rows = header
df.to_csv('output.csv', sep=';', encoding='latin-1', index=False)

我在循环中写了它,看实际日期(小时 - 分钟,但这只是一天)

1 个答案:

答案 0 :(得分:1)

这似乎微不足道,我甚至不确定我是否真的理解了这个问题......如果您想要的是将name添加为csv中每一行的最后一个元素,那么您只需做好吧,将它添加为您传递给csv writer的行的最后一个元素:

for record in table.find_all('tr', class_="hidden-xs hidden-sm ng-scope"):
    temp_data = []
    for data in record.find_all("td"):
        temp_data.append(data.text.encode('latin-1'))
    # here
    temp_data.append(name)