Не удается найти HTML-элементы с помощью BeautifulSoup Python

#python #pandas #beautifulsoup #python-requests #urllib

#python #pandas #beautifulsoup #python-запросы #urllib

Вопрос:

Я нашел действительно хороший код на https://towardsdatascience.com / веб-сайт для веб-очистки, и я пытаюсь реализовать его для собственного использования.

https://ingatlan.com/lista/elado lakas ii-ker?page=1 это венгерский сайт по недвижимости. Во-первых, я просто хочу узнать цены на недвижимость, но если я запускаю свой код, я не получаю никаких результатов, количество найденных элементов равно 0.

 import urllib.request,sys,time
from bs4 import BeautifulSoup
import requests
import pandas as pd

pagesToGet= 1

upperframe=[]  
for page in range(1,pagesToGet 1):
    print('processing page :', page)
    url = 'https://ingatlan.com/lista/elado lakas ii-ker?page=' str(page)
    print(url)
    
    
    try:
        page=requests.get(url)                            
    
    except Exception as e:                                   
        error_type, error_obj, error_info = sys.exc_info()     
        print ('ERROR FOR LINK:',url)                          
        print (error_type, 'Line:', error_info.tb_lineno)     
        continue                                              
    time.sleep(2)   
    soup=BeautifulSoup(page.text,'html.parser')
    frame=[]
    links=soup.find_all('div',attrs={'class':'listing js-listing '})
    print(len(links))
    filename="NEWS.csv"
    f=open(filename,"w", encoding = 'utf-8')
    headers="Pricen"
    f.write(headers)
    
for j in links:
        Price = j.find("div",attrs={'class':'price'})
        frame.append((Price))
        upperframe.extend(frame)
f.close()
data=pd.DataFrame(upperframe, columns=['Price'])
data.head()
  

Что я могу испортить? Были сайты, где это работает, такие как Myprotein, но есть места, где этого не происходит.

Комментарии:

1. не могли бы вы определить, что не работает?

2. Конечно, извините, если я был недостаточно понятен. Итак, после запуска кода я не получаю никакого результата с веб-сайта. если я напечатаю длину переменной links, она будет равна 0. Но это должно быть 20, потому что на этой странице перечислены 20 объектов недвижимости.

3. Дело в том, что я хочу получить цены на недвижимость

4. Вы проверили ответ на запрос, является ли он 200 OK или 403 forbidden? потому что я получаю 403, когда я попытался использовать ссылку на моем конце.

Ответ №1:

Здесь указана только цена, поскольку вы только спросили об этом

без пользовательского агента он выдает ошибку 403 запрещено

 import requests
from bs4 import BeautifulSoup
import pandas as pd

start_url="https://ingatlan.com/lista/elado lakas ii-ker?page=1"
page_data=requests.get(start_url, headers={'User-Agent': 'XYZ/3.0'})
soup=BeautifulSoup(page_data.content,"html.parser")

#for i in soup:  #i was first just checking http staus here 
    #print(i)    #without useragent i got 403 as response
    #print()
    
Price=[]

for job_tag in soup.find_all("div",class_="resultspage__content"):
    for job_tag2 in job_tag.find_all("div",class_="listing js-listing"):
        for job_tag3 in job_tag2.find_all("div",class_="price__container js-has-sqm-price-info-tooltip"): 


            price=job_tag3.find("div",class_="price")
            Price.append(price.text.strip())
            #print(Price)

data=pd.DataFrame(Price,columns=["price"])
print(data)
  

вывод фрейма данных pandas

          price
0    31.5 M Ft
1    77.9 M Ft
2      62 M Ft
3   129.5 M Ft
4     125 M Ft
5    95.9 M Ft
6    46.9 M Ft
7    45.9 M Ft
8    59.9 M Ft
9     109 M Ft
10     48 M Ft
11     87 M Ft