如何使用 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 登录网站和抓取的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Scrapy制作Twitter Crawler? [关闭]