@SoulHunter033

Выдается одна ссылка при парсинге?

Всех приветствую, столкнулся с мини-проблемой при парсинге. Парсю сайт с объявлениями машин в Турции (если у вас не турецкий ИП то при входе на сайт нужна регистрация). Парсю через селениум т.к при БС4 сайт сразу определяет бота.
Спарсил title, price, пробег машин, итд с помощью цикла for который пробегается по каждому объявлению через общий класс "searchResultsItem". Вот код одного объявления

<tr data-id="895749612"
    class="searchResultsItem     ">
    <td class="searchResultsLargeThumbnail">
            <a href="/ilan/vasita-otomobil-renault-fluence-ect-1.6-16-v-895749612/detay" title="fluence ect 1.6 16 v">
    <img class="searchResultThumbnailPlaceholder otherNoImage"
             src="https://s0.shbdn.com/assets/images/iconHasMegaPhotoLarge:d9417b1d5ff2b476ea61565150588a96.png"
             alt="fluence ect 1.6 16 v #895749612" title="Megafotolu ilan"/>
    </a>
</td>
    <td class="searchResultsTagAttributeValue">
                        1.6 Extreme</td>
                <td class="searchResultsTitleValue ">

                    <input id="favoriteClassifiedsVisibility" type="hidden" value="true"/>
<div class="action-wrapper" data-classified-id="895749612">
                            <div class="add-to-favorites last favorite">
        <a href="#"
           class="action classifiedAddFavorite trackClick trackId_favorite  hidden"
           data-content="Favorilerime Ekle">
        </a>
        <a href="#"
           class="action classifiedRemoveFavorite trackClick trackId_favorite disable"
           data-content="Favorilerimde">
	    </a>
    </div>
<div class="compare hidden">
    <a class="facetedCheckbox action compare-classified" data-content="İlan Karşılaştır">
        <i></i>
    </a>
</div>
</div>
                    <a class=" classifiedTitle"
    title="fluence ect 1.6 16 v"
    href="/ilan/vasita-otomobil-renault-fluence-ect-1.6-16-v-895749612/detay">
    fluence ect 1.6 16 v</a>

<!-- This file has been included to desktop(classic, list, gallery view) and responsive -->

</td>
            <td class="searchResultsAttributeValue">
                    2011</td>
            <td class="searchResultsAttributeValue">
                    170.000</td>
            <td class="searchResultsAttributeValue">
                    Lacivert</td>
            <td class="searchResultsPriceValue">
                        <div> 69.000 TL</div></td>
                <td class="searchResultsDateValue">
                        <span>31 Mayıs</span>
                        <br/>
                        <span>2021</span>
                    </td>
                <td class="searchResultsLocationValue">
                        Kocaeli<br/>Derince</td>
                <td class="ignore-me">
    <a href="#" class="mark-as-ignored" title="Bu ilanla ilgilenmiyorum, gizle."></a>
    <a href="#" class="mark-as-not-ignored disable" data-content="Göster"></a>
</td>
</tr>


как видите в классе classifiedTitle в теге А есть атрибут href , но когда я пытаюсь спарсить этот атрибут код выдает мне одну и ту же ссылку, то есть на сайте 20 обьявлений но мне выдается 20 одинаковых, уже перепробывал все что знаю, помогите решить пожалуйста! Вот мой код
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import random
from selenium.common.exceptions import NoSuchElementException

browser = webdriver.Chrome('../chromedriver/chromedriver')

def get_first_ads():
	try:
		browser.get('https://www.sahibinden.com/renault-fluence?sorting=price_asc')
		time.sleep(random.randrange(2, 4))
			
		for card in browser.find_elements_by_class_name('searchResultsItem     '):

			card_titles = card.find_elements_by_class_name('classifiedTitle')
			for card_title in card_titles:
				#print(card_title.text)
				pass

			card_descs = card.find_elements_by_class_name('searchResultsAttributeValue')
			for card_desc in card_descs:
				#print(card_desc.text)
				pass

			card_prices = card.find_elements_by_class_name('searchResultsPriceValue')
			for card_price in card_prices:
				#print(card_price.text)	
				pass

			card_models = card.find_elements_by_class_name('searchResultsTagAttributeValue')
			for card_model in card_models:
				pass

			card_hrefs = browser.find_elements_by_class_name('classifiedTitle')
			for card_href in card_hrefs:
				card_url = card_href.get_attribute('href')			
				#card_id = card_href.get_attribute('href')
			print(card_url)	

			#print(f"{card_title.text} | {card_desc.text} | {card_price.text} | {card_model.text} | {card_id}")


		browser.close()
		browser.quit()

	except Exception as ex:
		print(ex)
		browser.close()
		browser.quit()

get_first_ads()
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
@GeneD88
QA
card_hrefs = browser.find_elements_by_class_name('classifiedTitle')
      for card_href in card_hrefs:
        card_url = card_href.get_attribute('href')
      print(card_url)


->

card_hrefs = browser.find_elements_by_class_name('classifiedTitle')
      for card_href in card_hrefs:
        card_url = card_href.get_attribute('href')
        print(card_url)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы