如何使用 Python 3 登录网站和抓取

Posted

技术标签:

【中文标题】如何使用 Python 3 登录网站和抓取【英文标题】:How to log-in to site and Scrape with Python 3 【发布时间】:2019-05-03 00:18:05 【问题描述】:

我想登录 facebook messenger 并解析 html

import requests
from bs4 import BeautifulSoup
import webbrowser
page = requests.get("https://www.messenger.com", auth=
('username', 'password'))

soup = BeautifulSoup(page, 'html.parser')

print(soup)

我从另一个堆栈问题中得到了这个,但它抛出了这个错误:

    File "C:/Code/Beautiful Soup Web Scraping.py", line 7, in <module>
    soup = len(BeautifulSoup(page, 'html.parser'))
  File "C:\Users\Ethan\AppData\Local\Programs\Python\Python37\lib\site-packages\bs4\__init__.py", line 246, in __init__
    elif len(markup) <= 256 and (
TypeError: object of type 'Response' has no len()

我怎样才能让它工作?

【问题讨论】:

尝试打印页面以确保您已登录,因为我猜此身份验证未正确传递,因此下一行失败 对于抓取,激活这些结果的最有效方法是使用 Selenium,因为您可以根据用户配置文件轻松存储烹饪:seleniumhq.org 无论如何,看看如何在 cookiejar 和 bs4 中使用 cookie:***.com/questions/23102833/… 【参考方案1】:

您必须将网页内容传递给 BeautifulSoup,而不是 requests.get 返回的 Response 对象。要获取内容,请使用 Response.content 属性。

在您的示例中使用:soup = BeautifulSoup(page.content, 'html.parser')

【讨论】:

【参考方案2】:

我会推荐使用Selenium,这将允许您登录到 Facebook,导航到所需的页面,并检索 html。然后,您可以将 HTML 传递给 BeautifulSoup。看看这个blog post 开始吧。

【讨论】:

以上是关于如何使用 Python 3 登录网站和抓取的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 抓取需要先登录的网站

如何通过登录对网站执行网页抓取

使用用户名和密码登录后如何抓取网站

如何使用Scrapy制作Twitter Crawler? [关闭]

如何使用 Python 3.5 和 BeautifulSoup 抓取 href [重复]

python爬虫使用Cookie如何进行