2017-03-06 70 views
1

页面基本上是当我点击窗口时打开的jpegs。到目前为止,我已经能够解析网站并将所有页面链接收集在一个列表中。现在,我想打开JPG并下载它们。但我不知道如何处理弹出窗口。如何在美丽的汤中打开弹出式窗口?

r = requests.get('http://www.assamtribune.com/scripts/at.asp?id=mar0217/Page6') 
c = r.content 
soup = BeautifulSoup(c,'lxml') 
+0

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 –

回答

2

您无法使用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并将其连接到我提供的代码。 玩得开心编码!

0

相信BeutuifulSoup不会帮助你,但你可以尝试selenium模块。尝试

driver.switch_to_window("windowName") 

但是有导航弹出窗口的警告。见this stack post

硒被记录在here