попробуйте получить первые атрибуты из 1-го магазина в Python 3 - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь получить атрибуты 1-го магазина с определенной страницы, до сих пор не могу добраться до них, потому что я думаю, что это своего рода массив магазинов - как я могу получить только первый?

import urllib.request
import requests
from bs4 import BeautifulSoup

with urllib.request.urlopen('https://www.zap.co.il/') as response:
html = response.read()
check ='https://www.zap.co.il/search.aspx?keyword='+'20KN0061IV'
r = requests.get(check)
html = requests.get(r.url)
bsObj = BeautifulSoup(html.content,'xml')
price = bsObj.find('div',attrs={'class':'StoresLines'})
print(price)

Я получаю все магазины - но я хочу только первый магазин - как это сделать?

1 Ответ

0 голосов
/ 25 февраля 2019

Чтобы получить доступ к главному магазину (магазину до перерыва), вы можете заменить

price = bsObj.find('div',attrs={'class':'StoresLines'})

на:

price = bsObj.select_one('div.StoreLine')

Если вы хотите получить лучший магазин из множестваСтроки ниже разрыва замените эту строку на:

price = bsObj.select_one('div.StoresLines div.StoreLine')

Надеюсь, это поможет!

Вывод последнего предложения:

<div class="StoreLine" data-distance="0" data-hit="-1240851152" data-iseilat="False" data-price-caption="מחיר סופי" data-prod-price="2609" data-product-id="688189532" data-siteid="1245" data-sog="c-pclaptop" data-store-line="" data-supply="2" data-total-price="2609" data-total-rank="4.48" pid="688189532">
<div class="StoreLine">
<div class="StoreLogo">
<a aria-label="לקריאת חוות דעת על שניידר" href="/clientcard.aspx?siteid=1245" id=""><img alt="שניידר" border="0" class="Logo" id="" src="https://img.zap.co.il/pics/imgs/nsite/newui/newssite-1245.gif"/></a>
</div>
<div class="StoreReviews">
<div class="BlueStars">
<span style="width: 99px;"></span>
</div>
<div class="StoreReviewsTxt">
<a aria-label="לקריאת 67 חוות דעת על Lenovo E480 20KN0061IV יבואן רשמי במלאי 1134 בסך הכל" class="LongLine" href="/clientcard.aspx?siteid=1245">67 חוות דעת בשנה האחרונה<br/>1134 בסך הכל</a>
</div>
<div class="StoreTags">
<div class="MapContainer1245 Regular" style="display: none;"></div>
</div>
</div>
<div class="StoreInfo">
<div class="StoreTitle">
<div class="StoreName">
<div aria-label="למידע נוסף על Lenovo E480 20KN0061IV יבואן רשמי במלאי" class="InfoBtn" onclick="javascript:ShowStoreTooltip(this, 'Lenovo E480 20KN0061IV יבואן רשמי במלאי','מוצר חדש 20KN0061IV יצרן: Lenovo , סוג מוצר: מחשב נייד , דגם מעבד: Intel® Core™ i5-8250U Processor (6M Cache, up to 3.40 GHz), נפח זכרון פנימי: 8GB , נפח אחסון: 256GB , סוג דיסק: PCIe NVMe M.2 SSD , גודל מסך: 14.0 , רזולוציה: 1920x1080 , דגם כרטיס מסך:');"></div>
<a aria-label="לקנייה ב-שניידר Lenovo E480 20KN0061IV יבואן רשמי במלאי" class="hl_ProductTitle modelClick" href="/fs.aspx?pid=688189532&amp;sog=c-pclaptop" id="" rel="nofollow" target="_blank">Lenovo E480 20KN0061IV יבואן רשמי במלאי</a>
</div>
</div>
<div class="ProdInfo">
<div class="infoItem">
<span class="label">מחיר:</span>
                        2,609 ₪
                    </div>
<div class="infoItem">
<span class="label">
                                משלוח:</span>
                            חינם
                        </div>
<div class="infoItem">
<span class="label">זמן אספקה:</span>
                            יומיים
                        </div>
</div>
</div>
<div class="FinalPrice">
<div class="FinalPriceLabel">מחיר סופי:</div>
<div class="PriceNum">2,609 ₪ </div>
</div>
<div class="BuyButtons">
<a aria-label="לקנייה ב-שניידר Lenovo E480 20KN0061IV יבואן רשמי במלאי" href="/fs.aspx?pid=688189532&amp;sog=c-pclaptop" id="" rel="nofollow" target="_blank"><div class="BuyBtn orange-style modelClick" rel="nofollow">
<div class="BuyBtnText">
                            לקנייה
                        </div>
</div></a>
<div class="BuyButtonsTxt">
                ב-<a aria-label="לקנייה ב-שניידר Lenovo E480 20KN0061IV יבואן רשמי במלאי" href="/fs.aspx?pid=688189532&amp;sog=c-pclaptop" id="" target="_blank">שניידר</a>
</div>
</div>
</div>
</div>

где:

price.select_one('.FinalPrice .PriceNum').text

возвращает:

'2,609 ₪ '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...