Merhabalar http://www.pythonchallenge.com/ şu sitedeki soruları çözüyorum ve 4. bölümde takıldım http://www.pythonchallenge.com/pc/def/linkedlist.php yardımcı olabilecek varmı acaba?
liknteki resime tıkladıgımız zaman bit php sayfası çıkıyor, url adresinde bulunan numarayı sayfada bulunan numara ile değiştirmemiz lazım . Bunu yapınca tekrar farklı bir numara veriyor,
bunu bir dongü halinde yapmak lazım , yardımcı olursanız sevinirim.
Sonra ne olacak?
Şu kodu kullanın:
from urllib import request
base_url = b"http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing="
number = b"12345"
while True:
data = request.urlopen((base_url + number).decode()).read()
number = data.rsplit(b" ", 1)[1]
print(data)
en son bir kelime verecek.
Farkettim, verdiğim kodu çalıştırınca gözünüz çıktılarda olsun.
Yes. Divide by two and keep going. çıktısını veriyor , üsteki numara 16044 oldugu için ikiye böldüm ve number = b"8022"
kodu bu şekilde değiştirdim.
Çalıştırdıgımda bir süre sonra bu çıktıyı veriyor There maybe misleading numbers in the text. One example is 82683. Look only for the next nothing and the next nothing is 63579'
sonrada hata verip kapanıyor…
Hatayı verdikten sonra data
değişkenini kontrol edin.
Data’yı kontrol edince peak.html diye sonuç cıkıyor.
Aynı sonucu ben şöyle buldum.
from webbot import Browser
import re
web = Browser()
num = str(16044/2)
link = 'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
web.go_to(link + num)
d2 = re.compile('and the next nothing is (\d+)')
while True:
gecici = web.get_page_source()
d3 = d2.search(gecici)
yen = d3.group(1)
if d3 == None:
break
web.go_to(link + yen)```
Gitmeniz gereken bir sonraki adres orası.
webbot, selenium gibi bir teknoloji; burada gereksiz.
Düzenliyecek olursam son olarak böyle birşey yazdım.
from urllib import request
from webbot import Browser
base_url = b'http://www.pythonchallenge.com/pc/def/linkedlist.php?nothing='
go_url = 'http://www.pythonchallenge.com/pc/def/'
#number = b"12345"
#16044/2= 8022
number = b"8022"
while True:
data = request.urlopen((base_url + number).decode()).read()
if not data.rsplit(b" ", 1)[-1].isdigit():
break
number = data.rsplit(b" ", 1)[1]
print(data)
print(str(data, 'utf-8'))
web = Browser()
web.go_to(go_url + str(data, 'utf-8'))
@Nikolays_Tesla @EkremDincel Neden str
yerine bytes
kullanıyorsunuz?
Dönüş değeri öyleydi ben de öyle kullandım.