#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