Listede Yazan Birşey Varsa O Elemanı Nasıl Silebilirim ?

beautiful-soup
python

#1

Merhabalar…

import requests
import re
from bs4 import BeautifulSoup
kelime=str(input("Aranacak Dorku Giriniz: "))
r=requests.get("https://www.google.com.tr/search?q="+kelime)
soup=BeautifulSoup(r.text,"lxml")
yeniliste=[]
sayi=0
while sayi<1:
    for link in soup.findAll('a', attrs={'href': re.compile("http://")}):
        yeniliste.append((link.get('href')))
    print(yeniliste)

    sayi += 1

Şöyle Bir Proje Kodladım Aradığımızı Rahatça Gösteren Program Olsun Diye Fakat Tek Aşamadığım Sorun Böyle Çalıştırınca Programı webcache leri Falanda Gösteriyor Fakat Ben webcache Yazan Bir Eleman Varsa Silinsin İstiyorum… Nasıl Yapabilirim ?


#2

Belki iyi bir cozum olmayacak(hatta cozum bile olmayabilir.) ama asagidakı kod ornegi isine yarar mi acaba

import requests
import re
from bs4 import BeautifulSoup

kelime=str(input("Aranacak Dorku Giriniz: "))

r = requests.get("https://www.google.com.tr//search?q=" + kelime)

soup = BeautifulSoup(r.content,"html.parser")
yeniliste = []
sayi = 0
while sayi < 1:
    re_compile = re.compile("http://")
    for link in soup.findAll("a",attrs = {"href":re_compile}):
        if not "webcache" in link.get('href'):
            print(link.get("href"))
        
        print('----------------')
        

    sayi += 1

Kusura bakma senin kodlardan bıraz daha degisik oldu.Mesela lxml yerine html.parser demek zorunda kaldim cunku lxml dedigimde benim telefonda hata verıyordu.


#3

Dostum Tam İstediğim Şekilde Oldu Çok Sağol Fakat Mantığınıda Anlamak İsterim Mantığıda Anlatırmısın ? Ve de /url?q= diye bir bölüm daha çıkıyor sitenin linkini verirken onuda silebilmek lazım…


#4

Merhaba.

O da şöyle oluyor:

import requests
import re
from bs4 import BeautifulSoup

kelime=str(input("Aranacak Dorku Giriniz: "))

r = requests.get("https://www.google.com.tr//search?q=" + kelime)

soup = BeautifulSoup(r.content,"html.parser")
yeniliste = []
sayi = 0
while sayi < 1:
    re_compile = re.compile("http://")
    for link in soup.findAll("a",attrs = {"href":re_compile}):
        if not "webcache" in link.get('href'):
            print(link.get("href").strip("/url?q=")) # Buradaki strip metoduna dikkat edin.
        
        print('----------------')
        

    sayi += 1

@Cihat_Altiparmak’ın cevabı üzerinden gittim ve strip isimli bir karakter dizisi metodu kullandım. Bu metod, verdiğiniz alt karakter dizisini, karakter dizisinden siliyor.

İyi çalışmalar.


#5

Kusura bakmayın merak ettim de acaba bu is baska yollarla halledilebilir mi?Cunku bu cozumun pek de tatmin edici oldugunu dusunmuyorum.(ne bileyim icimden oyle geldi.)Kusura bakma @Esat_Yilmaz sana cevap veremedim.Cunku ben de bu meseleyi Fırat Ozgulun pdf sinden arastırıyordum.Mantigini anlamadiysan elimden geldigince anlatabilirim.


#6

Hocam 2nizede Teşekkürlerimi Sunuyorum…
import requests
import re
from bs4 import BeautifulSoup
yenidosya=open(“googlearama.txt”,“w”)
kelime=str(input("Aranacak Dorku Giriniz: "))

r = requests.get(“https://www.google.com.tr//search?q=” + kelime)

soup = BeautifulSoup(r.content,“html.parser”)
yeniliste = []
sayi = 0
while sayi < 1:
re_compile = re.compile(“http://”)
for link in soup.findAll(“a”,attrs = {“href”:re_compile}):
if not “webcache” in link.get(‘href’):
a=((link.get(“href”).strip("/url?q=")))
r=requests.get(a)
print(r.url)

        yenidosya.write(r.url+"\n")


sayi += 1

Programın Son Hali Böyle Oldu Ve Tam İstediğim Gibi Çalışıyor Lakin Tek Anlamadığım Şey 3Fid%3D10&sa=U&ved=0ahUKEwiCteL32OvYAhUDFCwKHcSiCikQFgg8MAg&usg=AOvVaw2Z_x56rRJQJ86f2yD-FnvE Şöyle Karışık Şeyler Yazıyor Bunlar Sanırım Google’ın Encode Etmesinden Dolayı Bunu Nasıl Aşabilirim Linki Açınca Hata Veriyor Çünkü Ve İstediğim Tam Olarak Bu Sitenin Saf Halini Vermesi Lazım Googledan Açtığımızdaki Gibi yani Atıyorum http://www.deneme.com/index.php?id=1 gibi…


#7

Ben de bır deneyeyım dedım de bende hata vermıyordu.Acaba siz ne yaptınız kı?


#8

Yok Hata Vermiyor Zaten Dostum Tıkır Tıkır Çalışıyor Fakat Siteyi Bana Bu Şekilde Veriyor;
http://www.deneme.com/3Fid%3D10&sa=U&ved=0ahUKEwiCteL32OvYAhUDFCwKHcSiCikQFgg8MAg&usg=AOvVaw2Z_x56rRJQJ86f2yD-FnvE

Fakat Böyle Verince Ben İstediğim Şeye Ulaşamıyorum bana Bunu index.php?id= Gibi Vermesi Lazım… Acaba İlk Siteyi Açıp Sonra Alsak Siteyi Nasıl Olur…


#9

Dork giriniz kısmına matematik dedim.
Sonra cıkan linklerden birini secip kopyaladim ve google arama bolumune yapistirdim.

http://www.testlericoz.com/testler/6-sinif-matematik&sa=U&ved=0ahUKEwiH56Ty2OvYAhVCzKQKHdg3D-sQFggoMAQ&usg=AOvVaw0T60PK2p9dufs4cdqYhRDH

Dedim sayfaya gıdıyordu.Kusura bakmayın tekrardan hata yapiyorsam uyarin.


#10

Tamam ben de bakayım bulabilirsem anlatayım.


#11

Evet Sayfaya Gidiyor Fakat Farkındaysanız Hata Veriyor.
Fakat
http://www.testlericoz.com/testler/6-sinif-matematik Buraya Kadar Silince Hata Ortadan Kalkıyor Yani Bana http://www.testlericoz.com/testler/6-sinif-matematik Buraya Kadar Vermesi Lazım…


#12

Anladim bir bakayım.Cozum buldugumda sana bildiririm.İsim cikti.Kusura bakma lutfen.


#13


Su linke bakabilir misiniz acaba?Belki isinize yarar.Bu modulu termux dan kurmayı basardim ama ne hikmetse import edemiyorum.İmport etseydi sana daha iyi bir cevap verebilirdim belki.Baska yollar da arastıracagim.Buldugumda onu da bildiririm.


#14

Maalesef Python 2.7 Sanırım…


#15

Telefonda

from google import search

yerine

from googlesearch import search 

deyince import edebildim.

Buradaki dediginizi anlayamadim kusura bakmayin tekrardan.Dedigim gibi baska bir sey bulursam onu da burada paylasırım.


#16

Dostum Ben Python 3.6 İle Yazmaya Çalışıyorum Fakat Bu 2.7 De Çalışıyor Yani Derdime Deva Değil…


#17

Asagidaki cozum yolunu deneyebilir misiniz acaba?

import requests 
import re 
from bs4 import BeautifulSoup 

kelime=str(input("Aranacak Dorku Giriniz: ")) 

r = requests.get("https://www.google.com.tr//search?q=" + kelime) 
soup = BeautifulSoup(r.content,"html.parser") 

yeniliste = [] 
sayi = 0 

while sayi < 1: 
    re_compile = re.compile("http://") 
    durdurmak = 0
    for link in soup.findAll("a",attrs = {"href":re_compile}):
        if durdurmak == 0:
            durdurmak = 1
            continue 
        if not "webcache" in link.get('href'): 
            link = link.get("href").strip("/url?q=") # Buradaki strip metoduna dikkat edin.
            list_link = list(link)
            
            true_link = []
            for i in list_link:
                sayac = int(list_link.index(i))
                a = list_link[sayac]
                b = list_link[sayac + 1]
                c = list_link[sayac + 2]
                if a + b + c == "&sa":
                    break
                else:
                    true_link.extend(i)
            link = ""
            link = link.join(true_link)
            print(link)
            print('----------------') 
    
    sayi += 1

Yine de bunun cozum oldugunu dusunmuyorum ya neyse😁.


#18

Tam İstediğim Gibi Oldu Fakat Mantığını Anlatırmısın Dostum Merak Ettim


#19

Anlatayim soyle ki

import requests 
import re 
from bs4 import BeautifulSoup 

kelime=str(input("Aranacak Dorku Giriniz: ")) 

r = requests.get("https://www.google.com.tr//search?q=" + kelime) 
soup = BeautifulSoup(r.content,"html.parser") 

yeniliste = [] 
sayi = 0 

while sayi < 1: 
    re_compile = re.compile("http://") 
    durdurmak = 0    #burada durdurmak adli degisken atadim cunku aratmamiz sonucunda ilk cikan dork bos olacagi icin bana liste indexinin disinda hatasi veriyordu.
                                 #ileriki safhaya gecince daha iyi anlarsiniz.
    for link in soup.findAll("a",attrs = {"href":re_compile}):
        if durdurmak == 0:
            durdurmak = 1 #iste burada durdurmak degiskenini kullaniyorum.ilk andaki hatayi onlemek icin.kisaca burada programa diyorum ki:"eger ilk dork gelirse bunu es gec.
            continue 
        if not "webcache" in link.get('href'):     #burada eger bu linkde webcahche gecmiyorsa kabul et diyorum programa.
            link = link.get("href").strip("/url?q=") # Buradaki strip metoduna dikkat edin.#burada ismail bey "/url?q" bâbini halletti isin
            list_link = list(link) #bize sorun teskil eden birsey daha vardi.sondaki randoma benzer ifadeleri atmam lazimdi.Bu linki liste tipine donusturmek ,icindeki karakterleri daha kolay secebilmek amacliydi.ilerde gorecegiz ne ise yaradigini.
            
            true_link = []    #linkin en sade hallerini bir yere almaliydim.adi ustunde gercek_link(
            for i in list_link:   # simdi asil ise basliyoruz.Burada linkimizdeki her harfe bakabilmek icin bir for dongusu kurdum.
                sayac = int(list_link.index(i))#her gelen harf icin onun linkimizdeki yerini belirliyorum.Bak izle simdi.gerisi corap sokugu gibi geliyor.bu arada index metotu karakter dizisi verdigi icin bunu sayiya ceviriyorum.   
                a = list_link[sayac]   #zaten o linkteki aldigimiz i adli karakter
                b = list_link[sayac + 1] # bu i karakterinden sonra gelen ilk iki karakteri de boylece bulup a,b,c adli degiskenlere atiyoruz.
                c = list_link[sayac + 2]
                if a + b + c == "&sa":   #iste burada olay kopuyor.Burada ben programa diyorum ki:eger a =='&' and b == 's' and c == 'a' ise direk donguyu bitir ki bu '&sa'karakteri ve sonraki bolumu sadelestirilmis linke giremesin.
                    break
                else:
                    true_link.extend(i)  #eger a == '&' and b == 's' and c == 'a' degilse sen sadelestirilmis linki olusturmaya devam et.Cunku daha isin bitmedi.Sadelestirilmis link daha olusturulamadi.Senin gorevin sadelestirilmis linki guzel bir sekilde olusturmaktir.
            link = "" #bundan sonra asil linkleri true_link adli listeye depolamis olduk.Eger direkt ekrana bastirmak istiyorsan benimki gibi yap.
            link = link.join(true_link)
            print(link)
            print('----------------') 
    
    sayi += 1

Anlatimda anlasilmaz bir yer olursa hemen sor.Elimden geldigince cevaplamaya calisirim.(pek de iyi anlatim yaptigim soylenemez ama)(bu arada bu gonderdigim mesajda anlasilmaz yerleri duzeltmeye calisacagim.Bu arada hakikaten cok tesekkur ederim.Bana yeni seyler ogrettiniz ve ileride ogreneceklerim konusunda isimi kolaylastirdiniz.
Bi de benim anlamadigim nokta neden dork a python deyince link cikmiyor ki?(ayni sey dataclasses da da oldu.)
Yemek tarifleri diyorum cikiyor
Mevlana diyorum cikiyor.


#20

Çok Sağol Dostum Çok Güzel Anlatmışsın Teşekkür Ederim :slight_smile: