页面基本上是当我点击窗口时打开的jpegs。到目前为止,我已经能够解析网站并将所有页面链接收集在一个列表中。现在,我想打开JPG并下载它们。但我不知道如何处理弹出窗口。如何在美丽的汤中打开弹出式窗口?
r = requests.get('http://www.assamtribune.com/scripts/at.asp?id=mar0217/Page6')
c = r.content
soup = BeautifulSoup(c,'lxml')
页面基本上是当我点击窗口时打开的jpegs。到目前为止,我已经能够解析网站并将所有页面链接收集在一个列表中。现在,我想打开JPG并下载它们。但我不知道如何处理弹出窗口。如何在美丽的汤中打开弹出式窗口?
r = requests.get('http://www.assamtribune.com/scripts/at.asp?id=mar0217/Page6')
c = r.content
soup = BeautifulSoup(c,'lxml')
您无法使用BeautifulSoup打开弹出窗口。 BS用于解析页面,而不是模拟页面中的点击。
你可以做的是按照反应,直到你到达你想要的图像。
注意这一点:
1)您所请求的网址
2)是调用另一个请求IFRAME - 检查的iframe src
。你会注意到,如果把这个链接放到你的url中,它会打开你的页面。
3)框架中的页面请求调用一个html文件。那不是你想要的。你想要的图像。检查源代码,您将验证 直接链接到图像的右侧部分与框架src
链接相似。
4)使用请求来请求页面并下载文件。
检查此示例代码(我已经开始在上面的列表中的第2点)。
from bs4 import BeautifulSoup
import requests
import os
r = requests.get('http://www.assamtribune.com/scripts/PageAT.asp?id=2017/mar0217/Page6')
c = r.content
soup = BeautifulSoup(c,'lxml')
image = soup.find("img")["src"][3:]
r = requests.get("http://www.assamtribune.com/%s" % image.replace("Page", "BigPage"), stream=True)
if r.status_code == 200:
with open(os.getcwd() + "\\" + image.split("/")[-1], 'wb') as f:
f.write(r.content)
我会让你找到框架src
并将其连接到我提供的代码。 玩得开心编码!
相信BeutuifulSoup不会帮助你,但你可以尝试selenium
模块。尝试
driver.switch_to_window("windowName")
但是有导航弹出窗口的警告。见this stack post。
硒被记录在here。
BeautifulSoup是解析HTML,它不显示图像。显示图像的简单方法是使用第三方Pillow库,这是旧PIL库的现代分支。请参阅http://pillow.readthedocs.io/en/3.1.x/index.html和http://pillow.readthedocs.io/en/3.1.x/reference/Image.html#PIL.Image.Image.show –