Bu defa neredeyse bütün geliştiricilerin başları sıkıştığında başvurdukları ilk adres olan stackoverflow için bir kod yazdım. Burdaki amaç kod yazarken yardıma ihtiyaç duyulduğunda kod editöründen ayrılmadan python interpreter'da sorununa mümkün olan en kısa zamanda cevap bulmak.
kodu sdcard anadizinine stack.py olarak kaydederek ihtiyac duyduğunuz her an etkikeşimli kabuğa "import stack" yazarak kodu çalıştırabilirsiniz..
Kod ile ilgili sorun yaşamamak için kodu Pydroid uygulaması ile çalıştırın. (forumda mevcut)
kodu sdcard anadizinine stack.py olarak kaydederek ihtiyac duyduğunuz her an etkikeşimli kabuğa "import stack" yazarak kodu çalıştırabilirsiniz..
Kod ile ilgili sorun yaşamamak için kodu Pydroid uygulaması ile çalıştırın. (forumda mevcut)
PHP Kod:
#-*-coding:utf8;-*-
import HTMLParser
import urllib2
import re,sys,urllib,time,os
from xml.sax import saxutils as su
from urllib import quote, unquote
import platform
import subprocess
def yaz(parametre, time_sleep = 0.02):
for i in parametre:
time.sleep(time_sleep)
sys.stdout.write(i)
sys.stdout.flush()
if platform.platform().startswith("Linux"):
try:
from termcolor import colored, cprint
except:
yaz("Gerekli modüller yükleniyor...\n")
arg="pip install termcolor"
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
os.execv(sys.executable, ['python'] + sys.argv)
from termcolor import colored, cprint
try:
from bs4 import BeautifulSoup
except:
arg="pip install bs4"
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
os.execv(sys.executable, ['python'] + sys.argv)
from bs4 import BeautifulSoup
try:
import mechanize
except:
yaz("Gerekli modüller yükleniyor...\n")
arg="pip install mechanize"
os.system(sys.executable+" "+sys.prefix+"/bin/"+arg)
os.execv(sys.executable, ['python'] + sys.argv)
import mechanize
else:
try:
from termcolor import colored, cprint
except:
yaz("Gerekli modüller yükleniyor...\n")
subprocess.call(["python","-m","pip","install","termcolor"])
from termcolor import colored, cprint
try:
from bs4 import BeautifulSoup
except:
subprocess.call(["python","-m","pip","install","bs4"])
from bs4 import BeautifulSoup
try:
import mechanize
except:
yaz("Gerekli modüller yükleniyor...\n")
subprocess.call(["python","-m","pip","install","mechanize"])
import mechanize
h = HTMLParser.HTMLParser()
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)')]
y=colored('Proje Adı : StackOverFlow ','white', 'on_red')
a=colored('İletişim : http://www.qpython.club ','white','on_red')
c=colored('Geliştirici: Ethnic ','white','on_red')
des= colored('_'*60,'red')
yaz(des+'\n\n'+y+'\n\n'+a+'\n\n'+c+'\n\n'+des+'\n',0.004)
def sayfa_ac(go_link):
html = br.open(go_link).read()
data=su.unescape(html, {'"':'"','&':'&'})
soup = BeautifulSoup(data,'html.parser')
veri=''
say=1
for lin in soup.findAll('div',class_="post-text"):
try:
a=data.split('<div class="post-text" itemprop="text">')[say]
a=h.unescape(a.decode('utf-8'))
so = BeautifulSoup(a,'html.parser')
com=''
for alt in so.findAll('span',class_="comment-copy"):
com+='-'*60+'\n+ '+colored(alt.getText(),'cyan')+'\n'
except Exception as e:
print e
pass
veri += colored(str(lin).decode('utf-8'),'white',attrs={'dark'})+ '\n'+com+'\n'+colored('_'*60+'\n','red')+colored('\n'+'Answer '+str(say),'grey',attrs=['reverse', 'blink','bold'])+'\n'
say +=1
for min in soup.findAll('code'):
b = str(min)
veri=veri.replace(b,colored(b,'green'))
veri=re.sub('<pre>','\n',veri)
veri=re.sub('</pre>','',veri)
veri=re.sub('<p>','\n',veri)
veri=re.sub('</p>','',veri)
veri=re.sub('<(.*?)>','',veri)
veri=h.unescape(veri)
yaz(veri,0.0001)
def arama():
print '\n'
google = raw_input(colored('StackOverFlow\'da Ara : ','red',attrs=['bold']))
google=google.replace(' ','+')
query = urllib.quote(google)
url = "https://www.google.com.tr/search?q="+query+'%20site:stackoverflow.com'
try:
ac = br.open(url)
print '\n'
html = ac.read()
except:
yaz('\n\n-Bağlantı hatası! Veri bağlantısını kontrol edin.\n')
quit()
if str(c[29]) != 'c':
quit()
else:
pass
try:
data=su.unescape(html, {'"':'"','&':'&'})
results = re.findall(r'\<h3.*?\>.*?\<\/h3\>', data, re.IGNORECASE)
isim=[]
adr = []
say = 0
for r in results:
say += 1
mtch = re.match(r'.*?a\s*?href=\"(.*?)\".*?\>(.*?)\<\/a\>.*$', r, flags=re.IGNORECASE)
url = mtch.group(1)
url = re.sub(r'^.*?=', '', url, count=1) # prefixed over urls \url=q?
url = re.sub(r'\&.*$', '', url, count=1) # suffixed google things
url = unquote(url)
adr.append(url)
name = mtch.group(2)
name = re.sub(r'<.*?>', '', name)
name=name.decode('utf-8')
name = h.unescape(name)
isim.append(name)
ciz=colored('-'*60,'red')
yaz( str(say)+ ' - ' + name + '\n'+ciz, 0.0005)
except:
pass
if not adr:
yaz('\n- Sonuç bulunamadı! Tekrar deneyin.\n\n')
arama()
else:
pass
print '\n'
yanlis = False
while not yanlis:
try:
print '\n'
git = raw_input(colored('Konu Numarası : ','red',attrs=['bold']))
go_link = adr[int(git)-1]
yaz(colored('\n\n'+isim[int(git)-1], 'grey',attrs=['reverse', 'blink','bold'])+'\n')
sayfa_ac(go_link)
except Exception as e:
print e
yaz('\n- Lütfen site numarasını doğru giriniz!\n\n')
pass
arama()