【发布时间】:2018-01-01 08:21:38
【问题描述】:
我想在 Python 2.7 中使用 selenium 对网站进行一些网页抓取,稍等片刻,然后关闭浏览器 + 关闭 geckodriver.exe(因为我不想打开数百万个浏览器页面和.exe 文件)
有什么办法可以做到吗?
我的 cmets 代码:
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import urllib2
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
from bs4 import BeautifulSoup
import MySQLdb
import re
import contextlib
import selenium.webdriver.support.ui as ui
#I am create a new csv file
filename=r'output.csv'
resultcsv=open(filename,"wb")
output=csv.writer(resultcsv, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1')
#I am opening the website with selenium (js website)
profile=webdriver.FirefoxProfile()
profile.set_preference("intl.accept_languages","en-us")
driver = webdriver.Firefox(firefox_profile=profile)
driver.get("https://www.flightradar24.com/data/airports/bud/arrivals")
time.sleep(10)
html_source=driver.page_source
soup=BeautifulSoup(html_source,"html.parser")
print soup
#HERE I AM WEBSCRAPING THE INFORMATIONS WHAT I NEEDED AND
#AFTER I AM WRITING IT INTO THIS CSV FILE.
output.writerows(datatable)
resultcsv.close()
#AND MY QUESTION START HERE. I WANT TO CLOSE THIS SESSEION,
#WAIT A LITTLE, FOR EXAMPLE 10 SEC, BECAUSE IT IS NEEDED SOME TIME TO WEB-
#SCRAPING DATAES AFTER THIS CLOSE THE GECKODRIVER + FIREFOX, AND AFTER
#REPEAT THIS CODE WITH A NEW WEBSITE. IS IT POSSIBLE?
更新代码 - nutmeg64
我收到此错误消息:
文件“C:/Python27/air17.py”,第 43 行,在 刮(网址) 文件“C:/Python27/air17.py”,第 28 行,在抓取中 table = soup.find('table', { "class" : "table table-condensed table-hover data-table m-n-t-15" }) NameError: 全局名称“汤”未定义
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import urllib2
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
from bs4 import BeautifulSoup
import MySQLdb
import re
import contextlib
import selenium.webdriver.support.ui as ui
filename=r'output.csv'
resultcsv=open(filename,"wb")
output=csv.writer(resultcsv, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1')
def scrape(urls):
browser = webdriver.Firefox()
for url in urls:
browser.get(url)
html = browser.page_source
soup=BeautifulSoup(html,"html.parser")
table = soup.find('table', { "class" : "table table-condensed table-hover data-table m-n-t-15" })
datatable=[]
for record in table.find_all('tr', class_="hidden-xs hidden-sm ng-scope"):
temp_data = []
for data in record.find_all("td"):
temp_data.append(data.text.encode('latin-1'))
datatable.append(temp_data)
output.writerows(datatable)
resultcsv.close()
time.sleep(10)
browser.quit()
urls = ["https://www.flightradar24.com/data/airports/bud/arrivals", "https://www.flightradar24.com/data/airports/fco/arrivals"]
scrape(urls)
【问题讨论】:
-
这很简单。您有 2 个选择,1:关闭浏览器,然后重新启动一个。 2:使用现有驱动导航到新页面。这真的很简单。你有什么问题?
-
问题是我是编程世界的初学者,但我正在努力发展我的技能^^所以解决方案1:在结果csv.close()之后我必须写这个:浏览器.quit() 和 browser.get(www.google.hu) 例如?就这样? 2.解决方案听起来更好,关闭浏览器是不必要的,如何使用现有驱动程序导航到新页面?
标签: python selenium web-scraping geckodriver