Beautifulsoup вход в Facebook

#python #web-scraping #beautifulsoup #scrapy

#python #очистка веб-страниц #beautifulsoup #scrapy

Вопрос:

Я пытаюсь использовать Beautifulsoup для очистки данных публикации с помощью приведенного ниже кода, но я обнаружил, что beautifulsoup не удается войти в систему, что приводит к тому, что скребок возвращает текст всего сообщения и включает сообщение заголовка (текст, который просит вас войти в систему).

Могу ли я знать, как изменить код, чтобы возвращать информацию для конкретного сообщения с этим идентификатором, а не всю информацию о сообщениях. Спасибо!

 import requests
from bs4 import BeautifulSoup

class faceBookBot():
    login_basic_url = "https://mbasic.facebook.com/login"
    login_mobile_url = 'https://m.facebook.com/login'
    payload = {
            'email': 'XXXX@gmail.com',
            'pass': "XXXX"
    }
    post_ID = ""

    # login to facebook and redirect to the link with specific post 
    # I guess something wrong happen in below function
    def parse_html(self, request_url):
        with requests.Session() as session:
            post = session.post(self.login_basic_url, data=self.payload)
            parsed_html = session.get(request_url)
        return parsed_html

    # scrape the post all <p> which is the paragraph/content part
    def post_content(self):
        REQUEST_URL = f'https://m.facebook.com/story.php?story_fbid={self.post_ID}amp;id=7724542745'
        soup = BeautifulSoup(self.parse_html(REQUEST_URL).content, "html.parser")
        content = soup.find_all('p')
        post_content = []
        for lines in content:
            post_content.append(lines.text)
        post_content = ' '.join(post_content)
        return post_content

bot = faceBookBot()
bot.post_ID = "10158200911252746"
 

Ответ №1:

Вы не можете, facebook шифрует пароль, и у вас нет используемого ими шифрования, сервер никогда не примет его, сэкономьте свое время и найдите другой способ

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

1. Можно ли добавить файлы cookie, которые передают логин и переходят к моему месту назначения для очистки?

Ответ №2:

@AnsonChan да, вы можете открыть страницу с помощью selenium, войти в систему, а затем скопировать ее файлы cookie в запросы:

 from selenium import webdriver
import requests

driver = webdriver.Chrome()
driver.get('http://facebook.com')
# login manually, or automate it.
# when logged in:
session = requests.session()
[session.cookies.update({cookie['name']: cookie['value']}) for cookie in driver.get_cookies()]
driver.quit()
# get the page you want with requests
response = session.get('https://m.facebook.com/story.php?story_fbid=123456789')