CoderCastrov logo
CoderCastrov
Facebook парсер

Парсинг Facebook Marketplace

Парсинг Facebook Marketplace
просмотров
2 мин чтение
#Facebook парсер

В этом скрипте я хочу открыть Facebook Marketplace и открыть профиль продавца товара в новой вкладке

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from bs4 import BeautifulSoup
import time

PATH = "C:\\Program Files (x86)\\chromedriver.exe"
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications" : 2}
chrome_options.add_experimental_option("prefs",prefs)
driver = webdriver.Chrome(PATH, options=chrome_options)

********************************

url = "https://www.facebook.com/marketplace/category/electronics" driver.get(url) driver.maximize_window()

#********************************

email = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, '//[@id="email"]'))) password = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH, '//[@id="pass"]'))) email.clear() password.clear() email.send_keys('email') password.send_keys('password') connect = WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.NAME, 'login'))).click() time.sleep(5)

#********************************# Прокрутка и получение исходного кода страницы с помощью Selenium.def get_page_source(url): for i in range(1, 5): # Прокрутка вниз до конца страницы для загрузки всех элементов. driver.execute_script( "window.scrollTo(0, document.body.scrollHeight);")


Дождитесь загрузки страницы. time.sleep(5)

page_source = driver.page_source return page_source

#********************************

page_source = get_page_source(url)# Разбор исходного кода страницы с помощью BeautifulSoup.soup = BeautifulSoup(page_source, 'html.parser') #********************************

# Получение элементов.div = soup.findAll('a', {'class': 'x1i10hfl xjbqb8w x6umtig x1b1mbwd xaqea5y xav7gou x9f619 x1ypdohk xt0psk2 xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz x1heor9g x1lku1pv'})print('начало обработки профилей :3 ')

#********************************

for element in div : webdriver_element = driver.find_element_by_css_selector('a[href="{}"]'.format(element['href'])) webdriver_element.click()

new_url = driver.current_url page2_source = get_page_source(new_url) soup = BeautifulSoup(page2_source, 'html.parser')

#на этом этапе есть два разных элемента с одинаковым именем класса, поэтому я указал соответствующую кнопку, которая является вторым элементом списка: seller[1]. Затем получите его атрибут href и щелкните по ссылке, чтобы открыть в новой вкладке.

seller = soup.findAll('a', {'class': 'x1i10hfl x1qjc9v5 xjqpnuy xa49m3k xqeqjp1 x2hbi6w x972fbf xcfux6l x1qhh985 xm0m39n x9f619 xdl72j9 x2lah0s xe8uvvx x2lwn1j xeuugli x16tdsg8 x1hl2dhg xggy1nq x1ja2u2z x1t137rt x1o1ewxj x3x9cwd x1e5q0jg x13rtm0m x1q0g3np x87ps6o x1lku1pv x1a2a7pz x1fey0fg x1ypdohk x1k74hu9 x1ejq31n xd10rxx x1sy0etr x17r0tee x1rg5ohu xdj266r x11i5rnm xat24cr x1mh8g0r xexx8yu x4uap5 x18d9i69 xkhd6sd x1n2onr6 x3ajldb actionChildElement'})

profile = seller[1]webdriver_element2 = driver.find_element_by_css_selector('a[href="{}"]'.format(profile['href'])) webdriver_element2.send_keys(Keys.CONTROL + Keys.RETURN)

#это код для поиска кнопки выхода на странице и щелчка, а затем ожидания 5 секунд перед началом цикла

bouton_quitter = soup.find('div', {'class': 'x1i10hfl x6umtig x1b1mbwd xaqea5y xav7gou x1ypdohk xe8uvvx xdj266r x11i5rnm xat24cr x1mh8g0r x16tdsg8 x1hl2dhg xggy1nq x87ps6o x1lku1pv x1a2a7pz x6s0dn4 x14yjl9h xudhj91 x18nykt9 xww2gxu x972fbf xcfux6l x1qhh985 xm0m39n x9f619 x78zum5 xl56j7k xexx8yu x4uap5 x18d9i69 xkhd6sd x1n2onr6 x1vqgdyp x100vrsf x18l40ae x14ctfv'}) webdriver_element2 = driver.find_element_by_css_selector('a[href="{}"]'.format(profile['href'])) webdriver_element2.click()

time.sleep(5)

print('до свидания! ')