2016-12-24 16 views
-1

Dies ist mein erstes Python-Projekt, das ich ziemlich genau nach Youtube-Videos geschrieben habe. Obwohl ich nicht sehr versiert bin, denke ich, dass ich die Grundlagen der Codierung habe.Bestimmte Daten nach dem Crawlen von Webseiten in Python erhalten

#importing the module that allows to connect to the internet 
import requests 

#this allows to get data from by crawling webpages 
from bs4 import BeautifulSoup 

#creating a loop to change url everytime it is executed 
def creator_spider(max_pages): 
page = 0 
while page < max_pages: 
    url = 'https://www.patreon.com/sitemap/campaigns/' + str(page) 
    source_code = requests.get(url) 

    plain_text = source_code.text 
    soup = BeautifulSoup(plain_text, "html.parser") 

    for link in soup.findAll('a', {'class': ''}): 
     href = "https://www.patreon.com" + link.get('href') 
     #title = link.string 
     print(href) 
     #print(title) 
     get_single_item_data(href) 
    page = page + 1 

def get_single_item_data(item_url): 
    source_code = requests.get(item_url) 
    plain_text = source_code.text 

    soup = BeautifulSoup(plain_text, "html.parser") 
    print soup 
    for item_name in soup.findAll('h6'): 
    print(item_name.string) 

Von jeder Seite, die ich kriechen, ich den Code wollen diese Informationen hervorgehoben zu bekommen: http://imgur.com/a/e59S9 deren Quellcode ist: http://imgur.com/a/8qv7k

, was ich denke, ist ich die Attribute soup.findAll ändern sollte() in der get_single_item_data() -Funktion, aber alle meine Versuche waren sinnlos. Jede Hilfe wird sehr geschätzt.

+1

Dies ist eine Javascript Seite und kann nicht gecrawlt werden. Sie müssen einen echten Browser zum Crawlen dieser Art von Seiten simulieren. Sie können Selen oder Phantomjs versuchen – sailesh

Antwort

0

von BS4 docs

https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class

Es ist sehr nützlich für einen Tag zu suchen, die eine bestimmte CSS-Klasse, aber der Name des CSS-Attribut „class“, ist ein reserviertes Wort in Python. Wenn Sie die Klasse als Schlüsselwort verwenden, erhalten Sie einen Syntaxfehler.

soup.find_all("a", class_="sister") 
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>, 

jedoch nach genauerer Blick auf den Code, den Sie in pic erwähnt dieser Ansatz bekommen nicht, was Sie wollen: Ab Schöne Suppe 4.1.2, Sie von CSS-Klasse mit dem Schlüsselwort Argument class_ suchen. In der Quelle sehe ich Daten-Reaktion-ID. DOM wird von ReactJS erstellt und requests.get (url) führt JS an Ihrem Ende nicht aus. Deaktivieren Sie JS in Ihrem Browser, um zu sehen, was mit requests.get (url) zurückgegeben wird.

Mit freundlichen Grüßen

Verwandte Themen