2017-06-08 11 views
0

So verwende ich Selen, Phantomjs als meine Webdriver und beautifulsoup. derzeit möchte ich alle Links extrahieren, die sich unter dem Attributtitel befinden. The site i want to extractBeautifulSoup nicht in der Lage, HREF-Link zu extrahieren

Es scheint jedoch, diese Links überhaupt nicht aufzuheben! Was ist los ? Hier

# The standard library modules 
import os 
import sys 
import re 

# The wget module 
import wget 

# The BeautifulSoup module 
from bs4 import BeautifulSoup 

# The selenium module 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.by import By 


def getListLinks(link): 
    #setup drivers 
    driver = webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true']) 
    driver.get(link) # load the web page 
    src = driver.page_source 

    #Get text and split it 
    soup = BeautifulSoup(src, 'html5lib') 
    print soup 
    links = soup.find_all('a') 
    print links  

    driver.close() 

getListLinks("http://www.bursamalaysia.com/market/listed-companies/company-announcements/#/?category=FA&sub_category=FA1&alphabetical=All&company=9695&date_from=01/01/2012&date_to=31/12/2016") 

ist ein Beispiel für einen Link Ich möchte

<a href="/market/listed-companies/company-announcements/5455245">Quarterly rpt on consolidated results for the financial period ended 31/03/2017</a> 

Antwort

2

extrahieren Was ich wirklich nicht verstehe, ist, warum Sie mit Selen mischen beautifullsoup. Selen hat seine eigene API für Extrakt dom Element. Sie müssen BS4 nicht ins Bild bringen. Außerdem kann BS4 nur mit statischem HTML arbeiten und ignoriert dynamisch generiertes HTML, mit dem Ihre Selen-Instanz umgehen kann.

Just do

driver.find_element_by_tag_name('a') 
+0

ohhh in Ordnung. Ich bin eigentlich nicht so vertraut mit der Verwendung dieser Bibliotheken noch xP. Vielen Dank! tho ich fand heraus, dass, wenn Sie versuchen, den Link zu laden, entfernt er alle zusätzlichen Filter und lädt den Hauptlink http://www.bursamalaysia.com/market/listed-companies/company-announcements/#/?category= Alle Wenn Sie versuchen, es einmal in Ihrem Browser zu laden, zeigt es zuerst die Hauptseite, aber beim zweiten Neuladen (kopieren Sie den Link wieder in Ihre Browser-URL einfügen), zeigt es Ihnen die Seite mit dem Filter, den ich gewählt habe. Irgendeine Idee, wie man es nicht machen kann? – Napmi

+0

Das hängt mit den Cookies zusammen und hört sich nach einer anderen Frage an (weil Filter hier nicht erwähnt werden). Sobald wir das Problem gelöst haben, posten Sie bitte eine weitere Frage und ich werde mich freuen, es zu versuchen. – e4c5

+0

hier gehen Sie. https://stackoverflow.com/questions/44448137/python-selenium-site-urls-filter-configuration-keeps-resetting – Napmi

Verwandte Themen