Reputation: 57
my problem is i can't catch the divs of class listing_LinkedListingCard__5SRvZ i use find_all however the result is empty list
the link :https://sa.aqar.fm/%D9%81%D9%84%D9%84-%D9%84%D9%84%D8%A8%D9%8A%D8%B9/%D8%A8%D8%B1%D9%8A%D8%AF%D8%A9
my code
import requests
from bs4 import BeautifulSoup
import time
web_page = requests.get("https://sa.aqar.fm/%D9%81%D9%84%D9%84-%D9%84%D9%84%D8%A8%D9%8A%D8%B9/%D8%A8%D8%B1%D9%8A%D8%AF%D8%A9")
def main(page):
src = page.content
soup = BeautifulSoup(src, 'lxml')
house_details = []
houses= soup.find_all("div",{'class':'listing_LinkedListingCard__5SRvZ'})
print(houses)
main(web_page)
any help ?
how i fix it then ?
Upvotes: 1
Views: 46
Reputation: 195438
In this case I've managed to get the information with changing the User-Agent
header. It might work in your case too. If not, you must find other ways to circumvent the Cloudflare protection (using selenium, using proxies, etc.)
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
}
url = "https://sa.aqar.fm/%D9%81%D9%84%D9%84-%D9%84%D9%84%D8%A8%D9%8A%D8%B9/%D8%A8%D8%B1%D9%8A%D8%AF%D8%A9"
src = requests.get(url, headers=headers).content
soup = BeautifulSoup(src, "html.parser")
houses = soup.find_all("div", {"class": "listing_LinkedListingCard__5SRvZ"})
for h in houses:
print(h.h4.text)
Prints:
فيلا للبيع في شارع عمرو ابن شجيرة ، حي النازية ، بريدة ، بريدة
فيلا للبيع في شارع التغيرة ، حي القويع ، بريدة ، بريدة
فيلا للبيع في حي الرحاب ، بريدة ، بريدة
فيلا للبيع في شارع الشقه العليا 1418 ، حي السليمانية ، بريدة ، بريدة
فيلا للبيع في حي الاخضر ، بريدة ، بريدة
فيلا للبيع في شارع إبراهيم بن موسي الزويد ، حي النخيل ، بريدة ، بريدة
فيلا للبيع في شارع الحزم 72 ، حي الحزم ، بريدة ، بريدة
فيلا للبيع في شارع هجره عسيلان 1065 ، حي النقيب الجنوبي ، بريدة ، بريدة
فيلا للبيع في شارع الأمير سلطان بن عبدالعزيز ، حي البصر ، بريدة ، بريدة
فيلا للبيع في شارع عيون الجواء ، حي الريان ، بريدة ، بريدة
فيلا للبيع في شارع الهيتي ، حي الريان ، بريدة ، بريدة
فيلا للبيع في شارع معتوق البغدادي ، حي الريان ، بريدة ، بريدة
فيلا للبيع في شارع عمرو ابن سفيان ، حي الشقة ، بريدة ، بريدة
فيلا للبيع في شارع واسط 90 ، حي واسط ، بريدة ، بريدة
فيلا للبيع في شارع المنصوريه ، حي الريان ، بريدة ، بريدة
فيلا للبيع في شارع الحزم 72 ، حي الحزم ، بريدة ، بريدة
فيلا للبيع في شارع ثعلية الأسدي ، حي الرفيعة ، بريدة ، بريدة
فيلا للبيع في شارع الورود 60 ، حي الورود ، بريدة ، بريدة
فيلا للبيع في حي الفايزية ، بريدة ، بريدة
فيلا للبيع في شارع الجبرين ، حي الروضه ، بريدة ، بريدة
Upvotes: 0
Reputation: 29
Your scraping is blocked by cloudflare, check soup.title.
When you are using the requests api, you are sending a User-Agent string that tells the server that you are not a regular browser:
web_page.request.headers
>> {'User-Agent': 'python-requests/2.26.0', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive'}
Upvotes: 1