【发布时间】:2018-03-17 22:11:00
【问题描述】:
编辑
好的,到目前为止,这是我的全部代码:
from selenium import webdriver
from bs4 import BeautifulSoup as bs
import requests
import time
import os
import Tkinter as tk
def get_page():
global driver
driver = webdriver.Chrome()
driver.get(url)
last_height = driver.execute_script('return
document.body.scrollHeight')
while True:
driver.execute_script('window.scrollTo(0,
document.body.scrollHeight);')
new_height = driver.execute_script('return
document.body.scrollHeight')
if new_height == last_height:
break
else:
last_height = new_height
#This function uses BeautifulSoup to parse through the page source and find images.
def get_img():
sp = bs(driver.page_source, 'html.parser')
for image in sp.find_all('img'):
images.append(image)
#Create folder which will contain downloaded images.
def make_dir():
if not os.path.exists('Downloaded images'):
os.mkdir('Downloaded images')
os.chdir('Downloaded images')
#Function which saves images.
def save_img():
x = 0
for image in images:
try:
url = image['src']
source = requests.get(url)
with open('img-{}.jpg'.format(x), 'wb') as f:
f.write(requests.get(url).content)
x += 1
except:
print 'Error while saving image.'
root = tk.Tk()
root.title('Image Scraper 1.0')
tk.Label(root, text = 'Enter URL:').grid(row=0)
e1 = tk.Entry(root)
e1.grid(row=0, column=1)
e1.insert(driver.get(url))
button1 = tk.Button(root, text = 'SCRAPE', command =scrape_site).grid(row=3, column=1, sticky=tk.W, pady=4)
button1.pack()
root.mainloop()
我试图将整个 scrape_site 函数放在 tkinters 按钮 command= 中,我现在看到这很愚蠢,显然它不起作用。如您所见,我将整个 tkinter 代码复制到主刮板文件中。有什么想法吗?我将不胜感激任何意见:)
我最近发布了关于网络爬虫的问题,它下载了猫的图像。这一次我决定,我会再向前迈出一步。我想制作 GUI 网络刮板,它将从网站下载图像,用户将在 tkinter Entry 小部件中输入这些图像。这甚至可能吗?我还创建了两个 .py 文件:一个用于刮板脚本,第二个用于 gui。它可以以这种方式存储还是应该是一个文件? 这是打开和滚动页面(使用硒)的刮板代码,它工作正常。我唯一的问题是:如何将其放入 tkinter? :)
def get_page():
global driver
driver = webdriver.Chrome()
driver.get(url)
last_height = driver.execute_script('return document.body.scrollHeight')
while True:
driver.execute_script('window.scrollTo(0,
document.body.scrollHeight);')
new_height = driver.execute_script('return
document.body.scrollHeight')
if new_height == last_height:
break
else:
last_height = new_height
get_page()
【问题讨论】:
-
您尚未共享任何 tkinter 代码。至于如何“将其放入 tkinter”,您可以更改 get_page 函数以接受
url作为参数。然后 tkinter 代码可以调用这个函数并从入口小部件传递 URL。
标签: python tkinter web-scraping