Почему я получаю больший список результатов поиска, чем на веб-странице, которую я просматриваю - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь собрать все href ссылки домов, перечисленных для продажи, но когда я запускаю свою программу, я получаю список из примерно 50, хотя это намного больше, чем количество домов в списке / href ссылок на этой единственной странице (url).

Я попытался просмотреть исходный код страницы и дать перекрестные ссылки на результаты моей программы, и хотя некоторые из них совпадают, есть некоторые, которые не могут быть найдены на странице веб-сайта (url).

import requests
from bs4 import BeautifulSoup as bs

url='https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E1091&insId=1&radius=0.0&minPrice=&maxPrice=&minBedrooms=&maxBedrooms=&displayPropertyType=&maxDaysSinceAdded=&_includeSSTC=on&sortByPriceDescending=&primaryDisplayPropertyType=&secondaryDisplayPropertyType=&oldDisplayPropertyType=&oldPrimaryDisplayPropertyType=&newHome=&auction=false'

Web_Page = requests.get(url)
Soup = bs(Web_Page.text,'html.parser')
Web_Section_Of_Interest= Soup.find_all('a',class_="propertyCard-link")


count=0
for item in Web_Section_Of_Interest:
    print('https://www.rightmove.co.uk'+item.get('href'))
    count+=1

print(count)

Я получаю список из 50 ссылок href

Но я ожидал, что список будет соответствовать числу домов, перечисленных на веб-странице url, которое будет 25.

Ответы [ 2 ]

2 голосов
/ 22 апреля 2019

Мне удалось решить проблему, заменив класс с "propertyCard-link" на "propertyCard-img-link"

Рабочий код:

import requests
from bs4 import BeautifulSoup as bs

url='https://www.rightmove.co.uk/property-for-sale/find.html?searchType=SALE&locationIdentifier=REGION%5E1091&insId=1&radius=0.0&minPrice=&maxPrice=&minBedrooms=&maxBedrooms=&displayPropertyType=&maxDaysSinceAdded=&_includeSSTC=on&sortByPriceDescending=&primaryDisplayPropertyType=&secondaryDisplayPropertyType=&oldDisplayPropertyType=&oldPrimaryDisplayPropertyType=&newHome=&auction=false'

Web_Page = requests.get(url)
Soup = bs(Web_Page.text,'html.parser')
Web_Section_Of_Interest= Soup.find_all('a',class_="propertyCard-img-link")

count=0

for item in Web_Section_Of_Interest:
    print('https://www.rightmove.co.uk'+item.get('href'))
    count+=1

print(count)
1 голос
/ 22 апреля 2019

Если вы посмотрите на фактический URL, который вы печатаете, вы заметите, что он печатает дубликаты. Технически, вы получаете только 25.

print(count)
https://www.rightmove.co.uk/property-for-sale/property-61358637.html
https://www.rightmove.co.uk/property-for-sale/property-61358637.html
https://www.rightmove.co.uk/property-for-sale/property-57044346.html
https://www.rightmove.co.uk/property-for-sale/property-57044346.html
https://www.rightmove.co.uk/commercial-property-for-sale/property-70211329.html
https://www.rightmove.co.uk/commercial-property-for-sale/property-70211329.html
https://www.rightmove.co.uk/property-for-sale/property-68319664.html
https://www.rightmove.co.uk/property-for-sale/property-68319664.html
....

Просто посмотрите на первые 2 элемента в ваших элементах propertyCard-link. Один - это «сводка», а другой - «подробности»:

Web_Section_Of_Interest[0]
Out[6]: 
<a class="propertyCard-link" data-bind="click: propertyCardClick('details'), attr: { href: computedDetailsLink() }" data-test="property-details" href="/property-for-sale/property-61358637.html">
<h2 class="propertyCard-title" data-bind="text: propertyTypeFullDescription" itemprop="name">
            2 bedroom semi-detached house for sale        </h2>
<address class="propertyCard-address" itemprop="address" itemscope="" itemtype="http://schema.org/PostalAddress">
<meta content="Auckland Road, Potters Bar" data-bind="attr: { content: displayAddress }" itemprop="streetAddress"/>
<meta content="GB" data-bind="attr: { content: countryCode }" itemprop="addressCountry"/>
<span data-bind="text: displayAddress">Auckland Road, Potters Bar</span>
</address>
</a>

Web_Section_Of_Interest[1]
Out[7]: 
<a class="propertyCard-link" data-bind="click: propertyCardClick('summary'), attr: { href: computedDetailsLink() }" href="/property-for-sale/property-61358637.html">
<span data-bind="html: summary" data-test="property-description" itemprop="description">BPM Auckland are pleased to offer this spacious Extended 2 Double bedroom 1930's built semi detached house, situated in this popular location within easy reach of good schools including Dame Alice Owens. The property benefits from a large 190' rear garden and also potential for a loft conversion...</span>
</a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...