Scraping Python Script: зацикливание и обновление вывода

Итак, у меня есть этот скрипт на Python. Прямо сейчас я запускаю скрипт, и он дает мне выходной файл в CSV.

Что я хочу: когда он завершает перезапуск и проверяет изменения этих выходных значений (не обновлять выходной файл при перезапуске и стирать все ранее собранные данные)

Кроме того, для извлечения требуется около 3 секунд на строку данных. Кто-нибудь знает, как я могу быстро справиться с большими наборами данных?

import urllib2,re,urllib,urlparse,csv,sys,time,threading,codecs
from bs4 import BeautifulSoup

def extract(url):
    try:
        sys.stdout.write('0')
        global file
        page = urllib2.urlopen(url).read()

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

        product = soup.find("div", {"class": "js-product-price"})
        price = product.findNext('div',{'class':'js-price-display'}).getText().strip()
        oos = product.findNext('p', attrs={'class': "price-oos"})

        if oos is None:
            oos = 'In Stock'
        else:
            oos = oos.getText()

        val = url + "," + price + "," + oos + "," + time.ctime() + '\n'
        ifile.write(val)
        sys.stdout.write('1')
    except Exception as e:
        print e
        #pass
    return

ifile = open('output.csv', "a", 0)
ifile.write('URL' + "," + 'Price' + "," + 'Stock' + "," + "Time" + '\n')
inputs = csv.reader(open('input.csv'))
#inputs = csv.reader(codecs.open('input.csv', 'rU', 'utf-16'))
for i in inputs:
    extract(i[0])
ifile.close()
print("finished")

0 ответов

Другие вопросы по тегам