2017-02-28 2 views
-1

複数のウェブサイトを(CSVファイルから)削り取り、Chromeの「Inspect Element」 - ソースコード(ウェブページを右クリックしてから「要素を検査」を選択)から特定のキーワードを抽出します。今、私は彼らの「ビュー・ソース」から特定のキーワードを抽出することができます複数のURLをSelenium Webdriverで削り取る

は、このスクリプトで(右クローム経由ビュー・ソースを選択し、その後、Webページ上でクリック)を-code:

import urllib2 
import csv 

fieldnames = ['Website', '@media', 'googleadservices.com/pagead/conversion.js', 'googleadservices.com/pagead/conversion_async.js'] 

def csv_writerheader(path): 
    with open(path, 'w') as csvfile: 
     writer = csv.DictWriter(csvfile, fieldnames=fieldnames, lineterminator='\n') 
     writer.writeheader() 

def csv_writer(dictdata, path): 
    with open(path, 'a') as csvfile: 
     writer = csv.DictWriter(csvfile, fieldnames=fieldnames, lineterminator='\n') 
     writer.writerow(dictdata) 

csv_output_file = 'EXPORT_Results!.csv' 
# LIST OF KEY WORDS (TITLE CASE TO MATCH FIELD NAMES) 
keywords = ['@media', 'googleadservices.com/pagead/conversion.js', 'googleadservices.com/pagead/conversion_async.js'] 

csv_writerheader(csv_output_file) 

with open('top1m-edited.csv', 'r') as f: 
    csv_f = csv.reader(f, lineterminator='\n') 
    for line in f: 
     strdomain = line.strip() 
     # INITIALIZE DICT 
     data = {'Website': strdomain} 

     if '.nl' in strdomain: 
      try: 
       req = urllib2.Request(strdomain.strip()) 
       response = urllib2.urlopen(req) 
       html_content = response.read() 

       # ITERATE THROUGH EACH KEY AND UPDATE DICT 
       for searchstring in keywords: 
        if searchstring.lower() in str(html_content).lower(): 
         print (strdomain, searchstring, 'found') 
         data[searchstring] = 'found' 
        else: 
         print (strdomain, searchstring, 'not found') 
         data[searchstring] = 'not found' 

       # CALL METHOD PASSING DICT AND OUTPUT FILE 
       csv_writer(data, csv_output_file) 

      except urllib2.HTTPError: 
       print (strdomain, 'HTTP ERROR') 

      except urllib2.URLError: 
       print (strdomain, 'URL ERROR') 

      except urllib2.socket.error: 
       print (strdomain, 'SOCKET ERROR') 

      except urllib2.ssl.CertificateError: 
       print (strdomain, 'SSL Certificate ERROR') 

f.close() 

この次コード"Inspect Element" - ソースコードをウェブサイトから入手して、上記のスクリプトを使用して後で(CSVファイルの複数のウェブサイトから)キーワードを抽出しました。コードは:

from selenium import webdriver 

driver = webdriver.Chrome(executable_path=r'C:\Users\Jacob\PycharmProjects\Testing\chromedriver_win32\chromedriver.exe') 
driver.get('https://www.rocmn.nl/') 

elem = driver.find_element_by_xpath("//*") 
source_code = elem.get_attribute("outerHTML") 

print(source_code) 

私は今のみクロール「の要素を点検し、」-sourceコードにために、第2の1で最初のスクリプトを統合したいと思います(のCSV内のすべてのウェブサイトの) CSVファイルで結果をエクスポートする(最初のスクリプトに表示されているように)

私はこの作業をどこから始めるべきかについて全く考えていません。助けてください

+0

はコード記述サービスではありません。私たちはプログラミング上の問題を解決するためにここにいますが、まずは何らかの努力を払う必要があります。 2つを組み合わせて、基本的なプログラミングチュートリアル、ブログ、書籍を読み、試してみてください。あなたがそれを働かせることができないなら、戻ってきてこの問題を編集して、あなたが問題を抱えていることをより具体的にしてください。 – JeffC

+0

私はそれを知っています。私はちょうど正しい方向に私を向ける誰かを求めるです。この時点で、私は真にどこから始めるべきかを知らない。 – jakeT888

答えて

0

ソースからのキーワードの収集は正しいアプローチではありません。本文部分とメタタグのキーワードは重要です。あなたが得るものは何でも、1に減らす必要があります。

private Object getTotalCount(String strKeyword) { 
    // TODO Getting total count for given keyword 
    // Setting up Javascript executor for executing javascript on a page. Make 
    // sure HTMLUNIDriver/Any driver having javascript enabled. 
    JavascriptExecutor jsExecutor = wdHTMLUnitDriver; 
    // System.out.println(driver.getCurrentUrl()); 
    // Counting up keyword on body of the web page only 
    Object objCount = null; 
    try { 
     objCount = jsExecutor.executeScript(
      "var temp = document.getElementsByTagName('body')[0].innerText;\r\nvar substrings = temp.split(arguments[0]);\r\n \r\nreturn (substrings.length);", 
      strKeyword); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    // System.out.println(obj.toString()); 
    if (objCount.equals(null)) 
     return null; 
    // Returning total count found by javascript executor. 
    return objCount.toString(); 
} 
関連する問題