#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')