当前位置:  开发笔记 > 编程语言 > 正文

使用已打开的网页(含硒)到beautifulsoup?

如何解决《使用已打开的网页(含硒)到beautifulsoup?》经验,为你挑选了1个好方法。

我打开了一个网页,并使用webdriver代码登录.使用webdriver是因为在我设置为scrape之前页面需要登录和各种其他操作.

目的是从这个打开的页面中抓取数据.需要找到链接并打开它们,因此selenium webdriver和BeautifulSoup之间会有很多组合.

我查看了bs4的文档,并BeautifulSoup(open("ccc.html"))抛出了一个错误

soup = bs4.BeautifulSoup(open("https://m/search.mp?ss=Pr+Dn+Ts"))

OSError:[Errno 22]参数无效:' https://m/search.mp?ss = Pr + Dn + Ts '

我认为这是因为它不是.html



1> alecxe..:

您正在尝试通过网址打开页面.open()不会这样做,使用urlopen():

from urllib.request import urlopen  # Python 3
# from urllib2 import urlopen  # Python 2

url = "your target url here"
soup = bs4.BeautifulSoup(urlopen(url), "html.parser")

或者,为人类使用HTTP - requests库:

import requests

response = requests.get(url)
soup = bs4.BeautifulSoup(response.content, "html.parser")

另请注意,强烈建议明确指定解析器 - 我html.parser在这种情况下使用过,还有其他解析器可用.


我想使用完全相同的页面(相同的实例)

一种常见的方法是获取driver.page_source并传递它以BeautifulSoup进一步解析:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get(url)

# wait for page to load..

source = driver.page_source
driver.quit()  # remove this line to leave the browser open

soup = BeautifulSoup(source, "html.parser")


我想我没有正确解释,页面已经打开了.:(我想使用由selenium打开的完全相同的页面(相同的实例).在这两个例子中,我假设一个新的基于url的请求正在打开/获取数据.
推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有