Jump to content

fallen_angel

Active Members
  • Posts

    220
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by fallen_angel

  1. Write a computer program that by creating various numbers of processes or threads, will determine the number of processors of the computer. Are cineva vreo idee? O implementare? Mul?umesc.
  2. Mie mi se pare de prost gust s? ”publici” munca altcuiva f?r? s? precizezi sursa.
  3. fallen_angel

    .

    Ai aici un exemplu de scraper care folose?te urllib2, multi-threading, BeautifulSoup4 ?i scrie rezultatele într-un fi?ier .xls Salveaz? scriptul ?i f? un fi?ier hudhomestore.txt în care pune pe prima linie ”miami,fl”, f?r? ghilimele Sper c? mai merge... from bs4 import BeautifulSoup from datetime import datetime import re import xlwt import urllib import threading import Queue import urllib2 import time class HudHomeStore(): """Scraping hudhomestore.com""" def __init__(self): self.queue = Queue.Queue() self.keywords = [] self.row = 0 #get the list of keywords from input file with open('hudhomestore.txt', 'r') as inputfile: lines = (line.rstrip() for line in inputfile) for key in (line for line in lines if line): self.keywords.append(key) self.keywords = [(city, state) for (city, state) in [ key.split(',') for key in self.keywords]] def encodeUrl(self, state, city, pageId): data = urllib.urlencode({ 'pageId': str(pageId), 'sPageSize': '10', 'zipCode': '', 'city': str(city), 'county': '', 'sState': str(state), 'fromPrice': '0', 'toPrice': '0', 'fCaseNumber': '', 'bed': '0', 'bath': '0', 'street': '', 'buyerType': '0', 'specialProgram': '', 'Status': '0', 'OrderbyName': 'SCASENUMBER', 'OrderbyValue': 'ASC', 'sLanguage': 'ENGLISH' }) return data def encodeString(self, string): data = unicode(string) return data.encode('utf8') def getNumberOfPages(self, page_source): """Extract the number of result's pages from first page source @page_source - string, HTML page source @return - a dictionary with our datas""" data = data.find_all('td') try: address = data[2].contents address = ' '.join(address[1].strings) except: address = ' ' notes = data[7].find('span').get_text().strip() start_date = data[8].find('span').get_text().strip() bedrooms = data[5].find('label').get_text().strip() bathrooms = data[6].find('label').get_text().strip() starting_bid = data[3].find('span').get_text().strip() result = {'site': 'www.hudhomestore.com', 'address': address, 'notes': notes, 'asset_type': 'NA', 'start_date': start_date, 'auction_time': 'NA', 'time_left': 'NA', 'starting_bid': starting_bid, 'current_bid': 'NA', 'final_amount': 'NA', 'case_no': 'NA', 'bedrooms': bedrooms, 'bathrooms': bathrooms, 'sq_feet': 'NA', 'end_date': 'NA', 'other_notes': 'NA' } return result def writeToExcel(self): """Output the results into results.xls file""" headers = ['site', 'address', 'notes', 'asset_type', 'start_date', 'auction_time', 'time_left', 'starting_bid', 'current_bid', 'final_amount', 'case_no', 'bedrooms', 'bathrooms', 'sq_feet', 'end_date', 'other_notes'] header_aliases = {'site': 'Site', 'address': 'Address City, St, County Zip', 'notes': 'Notes', 'asset_type': 'Asset Type', 'start_date': 'Start Date', 'auction_time': 'Auction Time', 'time_left': 'Time Left', 'starting_bid': 'Starting Bid', 'current_bid': 'Current Bid', 'final_amount': 'Final Judgement Amount', 'case_no': 'Case No', 'bedrooms': 'Bedrooms', 'bathrooms': 'Bathrooms', 'sq_feet': 'Sq Feet', 'end_date': 'End Date', 'other_notes': 'Other Notes' } workbook = xlwt.Workbook(encoding='utf8') sheet = workbook.add_sheet("HudHomeStore") for col, header in enumerate(headers): sheet.write(self.row, col, header_aliases[header]) if header == 'address' or header == 'other_notes': sheet.col(col).width = 256 * (len(header_aliases[header]) + 30) else: if len(header_aliases[header]) < 10: sheet.col(col).width = 256 * (len(header_aliases[header]) + 20) else: sheet.col(col).width = 256 * (len(header_aliases[header]) + 1) self.row += 1 #get the elements from the queue and save them into excel file while not self.queue.empty(): item = self.queue.get() for col, header in enumerate(headers): content = item[header].encode('utf8') sheet.write(self.row, col, content) self.row += 1 workbook.save("hudhomestore.xls") def worker(self, item): """Threads worker. Put on the queue the dictionaries with results for items on a page""" self.queue.put(self.parseData(item)) def run(self): for city, state in self.keywords: for page in self.getAllPages(state, city): threads = [] for item in self.splitPage(page): t = threading.Thread(target=self.worker, args=(item,)) threads.append(t) [x.start() for x in threads] [x.join() for x in threads] self.writeToExcel() def main(): runner = HudHomeStore() runner.run() if __name__ == '__main__': print "Start" start = datetime.now() main() print "Results were saved in hudhomestore.xls in", datetime.now() - start time.sleep(2)
  4. fallen_angel

    .

    A?a am f?cut ?i eu primul scraper, cu regex. Acu când m? uit la el, îmi vine s?-mi scot ochii Folose?te un HTML parser, gen BeautifulSoup4 sau LXML. Mai sunt ?i altele. De?i unii zic c? LXML ar fi mai ”?mecher”, eu (?i din ce am v?zut mult? lume) folosesc BeautifulSoup4, e mai prietenos Edit: câteva observa?ii minore legate de scriptul t?u: from urllib.request import urlopen d? ImportError: no module named urllib.request De ce nu folose?ti urllib2 ? De asemenea, urlopen().read() returneaz? string, nu mai trebui s? apelezi str(html) în regexurile tale. Apoi, ca s? evi?i Lock-urile c? ?i a?a zici c? nu-?i merg, pune rezultatele într-un queue, în loc de list?. Queue e thread-safe, pot scrie mai multe threaduri într-un queue f?r? s? fie probleme.
  5. F?-l bre s? introduci path-ul de unde s? înceap? s? scaneze
  6. Bine c? ai postat, c? de obicei sâmb?ta primesc pachet de acas? ?i arunc o gr?mad? de mâncare. La?i o adres?? Trimit prin po?t?.
  7. Eu a? zice s? se închid? topicul ?sta, c? e jenibil( o combina?ie între penibil ?i jenant). Fiecare muciflend?r care ia kick când întrece m?sura, vine ?i posteaz? aici ?i apoi 3 admini/moderatori stau s? dea explica?ii. P.S Dac? prostia e liter? de lege ?i e tolerat?, pentru ce mai exist? moderatori dac? trebuie s? dea cu subsemnatul de fiecare dat? când ia vreunul kick? ?i pentru fani: daaa, colc?i de frustrare c?-mi fac unii ?i al?ii reclama?ii pe aici, când ”suf?r de putere”.
  8. Mersi nedo. E o solu?ie Între timp am g?sit o alt? metod? de rezolvare, folosind Selenium* ?i PhantomJS. from selenium import webdriver URL = 'URL_UL_DORIT' browser = webdriver.PhantomJS("phantomjs-1.9.7-windows\phantomjs.exe") browser.get(URL) html = browser.page_source.encode('utf8') browser.quit() Linia a 3-a: Constructorul de la PhantomJS trebuie s? primeasc? path-ul c?tre binarul PhantomJS pe care îl downloada?i de pe site sau dac? sunte?i pe Linux**, îl g?si?i în repository (cel pu?in pe Ubuntu). *Selenium se instaleaz? cu pip install selenium . **Evident path-ul transmis în constructor trebuie modificat. Parc? "/usr/bin/phantomjs" e dac? bine îmi aduc aminte.
  9. Trebuie s? fac un scraper care s? ia informa?ii de pe pagina asta Are cineva vreo idee cum pot s? iau textul de sub imagini( dac? exist?) ? De exemplu ”Bank approved short sale” de sub prima imagine. Problema e c? textul respectiv nu apare în sursa paginii. Cred c? e generat cu Javascript.
  10. Uita?i-l aici pe maimu?oi cum pup? în cur în func?ie de cum sufl? ?efu. Ar fi de râs dac? n-ar fi de plâns.
  11. Am de f?cut un joc de Sudoku care începe cu câteva c?su?e completate iar calculatorul trebuie s? genereze o solu?ie pentru completarea celorlalte c?su?e. Nu conteaz? în ce limbaj (o s? fac în python), dar trebuie s? folosesc algoritmul breadth-first search. ?tiu, nu-i deloc potrivit pt Sudoku, dar asta e cerin?a. Nu prea ?tiu cum aplic BFS pt jocul de Sudoku. Ceva idei, care ar fi ”mersul” problemei? Exemplu de sudoku: Din ce am în?eles, ar trebui s? m? leg doar de c?su?ele necompletate. Cum ar ar?ta arborele pt exemplul ?sta?
  12. Copilul trebuie s? în?eleag? c? e nevoie s? stea la dentist. Dac? nu în?elege de bun? voie, trebuie ajutat. Uneori, o b?t?i?? e rupt? din rai. Altfel ajunge ca iceman.
  13. Auleo când punea bunica mâna pe o ”verjea” (aka bot?), puteai s? speri c? iei vitez? înainte s? iei prea multe pe cocoa??. ?-apoi dup? caz mai primeai ?i un dos de palm? lucrat? pe p?mânturile patriei de-?i s?rea numai sânge din buze. Alte vremuri, alte obiceiuri. Pe atunci nu era atâta democra?ie, atâtea drepturi, figuri ?i aere. Lumea cre?tea cu bun sim?, ?tia fiecare cât e ”lungul nasului”.
  14. Un picu? de off-topic. ?tie cineva de existen?a vreunei c?r?i care s? prezinte inven?iile române?ti, marile personalit??i române?ti ?
  15. S-a întâmplat prima dat? în România Apoi, despre industria petrolului: *Prima tara din lume cu o productie de titei, oficial inregistrata in statisticile internationale *Prima rafinarie din lume *Bucuresti, primul oras din lume iluminat public cu petrol lampant(incolor si fara miros, ardea cu o flacara luminoasa, de intensitate si forma constanta, fara fum si fara sa lase cenusa sau compusi rasinosi in fitil) Mai multe g?si?i aici: 150 de ani de petrol Ceva din ziua noastr?: Why Is The Internet In Romania So Damn Fast? Sângele artificial fabricat la Cluj Mai sunt ?i multe altele, dar nu îmi mai vin acu` în cap.
  16. Folose?te Python 2.7. Versiunea 3.x nu prea e folosit?, au cam dat un pic cu stângu-n dreptul cu versiunea asta. Înva?? 2.7 ?i pe urm? înve?i ce ?ine de 3.x dac? ai nevoie.
  17. C? ?i noi am vrut în UE ?i ne-am luat mUE, e partea a doua. S-ar putea ca ei s? nu se lase c?lca?i în picioare dac? intr? în UE cum nici polonezii nu s-au l?sat. Totu?i, e de apreciat curajul ?i hot?rârea cu care se lupt? pentru ce vor. (sco?i în strad? de cineva, manipula?i sau nu). Noi am ars-o o lun? cu ”plimb?ri duminicale” ?i când s-a aruncat o piatr?, nu au ?tiut care cum s? se scuze. Dup? imaginile cu poli?istul care arunc? cu pietre ?i transmite mesaje de dulce (mai v?zusem un poli?ist care arunca cu cocktailuri molotov), uita?i un filmule? funny: ?i dou? din categoria ”mai bine s? plâng? m?-sa”: http://www.youtube.com/watch?v=kcHx3T-fzEs
  18. Python din câte ?tiu eu e instalat default pe distribu?iile de linux. Tu ce ai nevoie mai exact? Un executabil care s? instaleze toate modulele non-standard pe care le folose?te scriptul t?u? Pentru ce versiune de python e scris scriptul?
  19. It's a trap! V? iau b?ie?ii la teste din chestiile la care zice?i c? v? pricepe?i, v? întorc pe toate fele?e ?i v? demonstreaz? c? nu ?ti?i nimic. Nu lua?i nici VIP ?i v? ?i pierde?i stima de sine. De aia nu postez eu c? vreau VIP, nu c? nu a? vrea
  20. Matt, keep up the good work! Nu-l b?ga în seam? pe Kabron, nu i-a ie?it pasen?a cu sec?iunea de web development ?i acuma încearc? s? ajung? mod. f?când ”ordine” pe aici.
  21. Vrei s? ajungi moderator.
×
×
  • Create New...