BeautifoulSoup没有返回Facebook中的所有内容

时间:2018-10-26 15:49:47

标签: python selenium beautifulsoup

我正在尝试提取给定用户在Facebook上喜欢的所有页面。因此,我将Python与BeautifulSoup和selenium结合使用来使连接自动化。

但是,即使我的代码有效,它也不会真正返回所有结果(例如,在我自己的配置文件中,它仅返回所有页面的20%)。

我读到它可能是BeautifulSoup中使用的解析器,但是我尝试了很多解析器(html.parser,lxml ...),而且总是一样。 可能是因为Facebook正在使用AJAX动态生成页面吗?但是然后我有了Selenium,应该正确解释它。 这是我的代码:

from selenium import webdriver
from bs4 import BeautifulSoup
import time

id_user = ""

driver = webdriver.Chrome()
driver.get('https://facebook.com')
driver.find_element_by_id('email').send_keys('')
driver.find_element_by_id('pass').send_keys('')
driver.find_element_by_id('loginbutton').click()
time.sleep(2)

pages_liked = "https://www.facebook.com/search/" + id_user + "/pages-liked"

driver.get(pages_liked)

soup = BeautifulSoup(driver.page_source, 'html.parser')

likes_divs = soup.find_all('a', class_="_32mo")

for div in likes_divs:
    print(div['href'].split("/?")[0])
    print(div.find('span').text)

非常感谢您,

Loïc

1 个答案:

答案 0 :(得分:0)

Facebook以使网页抓取器的生活变得艰难而闻名。也就是说,看起来您正确地完成了功课,摘录看上去很刻薄。

开始查看'driver.page_source',Selenium会得到什么...如果信息在那里,则问题出在BeautifulSoup内,如果不是,则Facebook找到了隐藏页面的策略(查看浏览器签名或指纹-是的,这些是不同的概念。