سوال از یک پروژه وب اسکرپینگ برای سایت دیوار
سلام
من یه پروژه وب اسکرپینگ می خوام انجام بدم برای سایت دیوار که به این صورته که اول برنامه باید یه کلمه از کاربر بگیره(مثلا منزل فروشی) بعد توی سایت دیوار سرچ کنه(کد این قسمت نمیدونم چجوری بزنم) بعدش مشخصات ۲۰ تا آگهی اول بگیره و توی یه فایل اکسل ذخیره کنه. مشکل من اینجاست که اولا همونطوری که بالا گفتم نمیدونم برای سرچ یه کلمه که از کاربر گرفته میشه توی سایت چه کدی باید بزنم و دوما اینکه نمیدونم باید یو آر ال اولین صفحه ای که با سرچ کلمه کاربر بالا میاد که همون لیست آگهی ها هستش بزنم یا نه بعد از اینکه صفحه سرچ بالا اومد وارد اولین آگهی بشم و یو آر ال اون صفحه رو بزنم(البته چون ریز اطلاعات آگهی مثلا مثل قیمت و متراژ و اطلاعات تماس و… اینارو میخواد صد در صد اطلاعات حالت دومی که گفتم رو باید استخراج کنم ولی نمیدونم چجوری باید یه کد بنویسم که بعد از اینکه کاربر کلمه شو سرچ کرد و صفحه آگهی ها بالا اومد بره توی یه آگهی خاص و ریز اطلاعات اونو دربیاره)
ممنون میشم اگه راهنماییم کنین
پاسخ ( ۱ )
keyword = input(“Enter a keyword to search: “)
import requests
url = ‘https://divar.ir/s/tehran/real-estate’
params = {‘q’: keyword}
response = requests.get(url, params=params)
if response.status_code == 200:
html = response.text
else:
print(“Error: could not retrieve search page”)
from bs4 import BeautifulSoup
import pandas as pd
soup = BeautifulSoup(html, ‘html.parser’)
ads = soup.find_all(‘div’, {‘data-cy’: ‘search_result_ad_card’})
data = []
for ad in ads[:20]:
title = ad.find(‘div’, {‘class’: ‘title’}).text.strip()
price = ad.find(‘div’, {‘class’: ‘price’}).text.strip()
phone = ad.find(‘a’, {‘class’: ‘contact-button’}).get(‘href’)[4:]
data.append([title, price, phone])
df = pd.DataFrame(data, columns=[‘Title’, ‘Price’, ‘Phone’])
df.to_excel(‘results.xlsx’, index=False)
ad_url = ‘https://divar.ir’ + ads[0].find(‘a’).get(‘href’)
response = requests.get(ad_url)
if response.status_code == 200:
ad_html = response.text
else:
print(“Error: could not retrieve ad page”)
ad_soup = BeautifulSoup(ad_html, ‘html.parser’)
location = ad_soup.find(‘div’, {‘class’: ‘breadcrumb’}).text.strip()
description = ad_soup.find(‘div’, {‘class’: ‘description’}).text.strip()