あなたの問題は、あなたの悪い習慣の結果であるを使用して:
try:
do something
except:
pass
この行のブロックでは、プログラムが期待どおりに実行された理由についての情報は取得できません。 それがスローする例外は、コードを改善するのに役立ちますが、このようにしないでください。
今、あなたの質問に戻ってください。あなたのコードでは、@Mohammad Rakib Amin's answerのようないくつかの論理エラーがあります。だから、あなたのコードに少し変更を加えるには、この得た:
from selenium import webdriver
browser = selenium.Chrome()
browser.get('https://www.google.co.uk/search?q=Rashmi&oq=Rashmi&aqs=chrome..69i57j69i60l3.6857j0j1&sourceid=chrome&ie=UTF-8#q=Rashmi+Custom+Tailors')
time.sleep(5)
p_links = browser.find_elements_by_css_selector(' div > h3 > a')
for urls in p_links:
if "Rashmi Custom Tailors" in urls.text:
url = urls.get_attribute("href")
browser.get(url)
time.sleep(4)
をしかし、これはあなたの問題を解決していないあなたが説明したように、お使いのブラウザは、この最初のURL を訪問すると例外を上げる:
StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
を
この例外は、2番目のループで使用している要素がブラウザの現在のページに接続されていないためにスローされます。
これに対する解決策は、あなたのやり方と全く同じことです。すべての要素を見つけ、すべてのURLをリストに追加します。そして、あなたはこのようなリストを繰り返し、それは私のコンピュータ上でうまくいく。お試しください:
from selenium import webdriver
browser = webdriver.Chrome()
query_url = "https://www.google.co.uk/search?q=Rashmi&oq=Rashmi&aqs=chrome..69i57j69i60l3.6857j0j1&sourceid=chrome&ie=UTF-8#q=Rashmi+Custom+Tailors"
browser.get(query_url)
p_links = browser.find_elements_by_css_selector("div > h3 > a")
urls = []
for elem in p_links:
text = elem.text
url = elem.get_property('href')
if "Rashmi Custom Tailors" in elem.text:
urls.append(url)
for url in urls:
browser.get(url)
おそらく、indent error
を2番目のループで作成しました。
P.S:必要なすべてのコードが含まれている必要があります。他の人があなたに手助けしやすくなります。
私は既に行っています..ループを間違った場所に置いていました。 –