2012-12-06 68 views
3

我得到這樣一個列表(數字是評論的次數)...的Python:獲取flattr的數

14 http://www.spiegelfechter.com/wordpress/8726/auswege-aus-der-sackgasse 
    26 http://www.spiegelfechter.com/wordpress/8722/die-asozialen-hinter-die-asozialen 
    77 http://www.spiegelfechter.com/wordpress/8717/in-gesetz-gegossene-verfassungswidrigkeit 
    91 http://www.spiegelfechter.com/wordpress/8714/the-same-procedure-as-every-year-europa-lugt-sich-selbst-in-die-tasche 
279 http://www.spiegelfechter.com/wordpress/8709/konstruktionsfehler-des-grundeinkommens 

... ...通過

import urllib2 
import re 

def main(): 
    pattern = re.compile('<a href="(.*)#comments".*>(\d+) Kommentare</a>') 
    liste = [] 
    for k in range(2, 3): 
     for line in urllib2.urlopen("http://www.spiegelfechter.com/wordpress/page/" + str(k)): 
      matcher = pattern.search(line) 
      if matcher != None: 
       liste.append("%4s" % matcher.group(2) + " " + matcher.group(1)) 
    for elt in sorted(liste): 
     print elt 

if __name__ == '__main__': 
    main() 

Flattr count

我有77,但是我怎樣才能在python中得到4 ...?我認爲4是在JavaScript中生成的,我認爲它很難在Python中處理JavaScript,但在這種情況下,它可能很容易?!

+0

你能更清楚地回答你的疑問嗎? –

+0

是的,我添加了一張照片。 –

+0

我會建議看看網頁的來源,並試圖找出JavaScript從哪裏獲取4。然後在Python中複製該請求。 – cemper93

回答

1

您可以use PyQt4's QtWebKit module在之後檢查HTML JavaScript已執行。然後,您可以使用像lxml.html這樣的HTML解析器來獲取所需的信息。

例如,

import urllib2 
import lxml.html as LH 
from PyQt4 import QtGui, QtCore, QtWebKit 
import sys 

class Render(QtWebKit.QWebPage): 
    def __init__(self, url): 
     self.app = QtGui.QApplication(sys.argv) 
     QtWebKit.QWebPage.__init__(self) 
     self.loadFinished.connect(self._loadFinished) 
     self.mainFrame().load(QtCore.QUrl(url)) 
     self.app.exec_() 

    def _loadFinished(self, result): 
     self.frame = self.mainFrame() 
     self.app.quit() 

def main(): 
    liste = [] 
    for k in range(2, 3): 
     url = "http://www.spiegelfechter.com/wordpress/page/" + str(k) 
     r = Render(url) 
     content = unicode(r.frame.toHtml()) 
     doc = LH.fromstring(content) 
     for span in doc.xpath('//span[@class="commentbutton"]'): 
      a = span.xpath('a')[0] 
      post = a.attrib['href'] 
      kommentare = a.text_content() 
      # kommentare is expected to be a string such as '14 Kommentare' 
      comments = int(kommentare.split()[0]) 

      iframe = span.xpath('iframe')[0] 
      flattr_url = (iframe.attrib['src']) 
      flattr_doc = LH.parse(flattr_url) 
      span = flattr_doc.xpath('//span[@class="flattr-count"]')[0] 
      flattr_count = int(span.text_content()) 
      liste.append((comments, flattr_count, post)) 
     for elt in sorted(liste): 
      print(elt) 

if __name__ == '__main__': 
    main() 

產生

(14, 1, 'http://www.spiegelfechter.com/wordpress/8726/auswege-aus-der-sackgasse#comments') 
(26, 1, 'http://www.spiegelfechter.com/wordpress/8722/die-asozialen-hinter-die-asozialen#comments') 
(77, 4, 'http://www.spiegelfechter.com/wordpress/8717/in-gesetz-gegossene-verfassungswidrigkeit#comments') 
(91, 1, 'http://www.spiegelfechter.com/wordpress/8714/the-same-procedure-as-every-year-europa-lugt-sich-selbst-in-die-tasche#comments') 
(279, 2, 'http://www.spiegelfechter.com/wordpress/8709/konstruktionsfehler-des-grundeinkommens#comments') 
+0

謝謝!很好,至少在Ubuntu上(我必須安裝lxml)!在此期間,我有我自己的解決方案,但它有一個小bug ... –

0

與此同時......我自己的解決方案......(哈克但臭蟲移除)

import urllib2 
import re 

def main(): 
    pattern = re.compile('<a href="(.*)#comments".*>(.+) Kommentare</a>') 
    patternFlattr = re.compile('"flattrs":([0-9]+),') 
    liste = [] 
    for k in range(10, 11): 
     for line in urllib2.urlopen("http://www.spiegelfechter.com/wordpress/page/" + str(k)): 
      matcher = pattern.search(line) 
      if matcher != None: 
       url = matcher.group(1) 
       for lineFlattr in urllib2.urlopen("https://api.flattr.com/rest/v2/things/lookup?url=" + url): 
        if lineFlattr == '{"message":"not_found","description":"No thing was found"}': 
         liste.append(" 0 %4s %s" % (matcher.group(2), url)) 
         break 
        matcherFlattr = patternFlattr.search(lineFlattr) 
        if matcherFlattr != None: 
         liste.append("%4s %4s %s" % (matcherFlattr.group(1), matcher.group(2), url)) 
         break 
    for elt in sorted(liste): 
     print elt 

if __name__ == '__main__': 
    main() 

.. 。返回類似...

0 2 http://www.spiegelfechter.com/wordpress/8592/a-very-european-breakup 
    0 11 http://www.spiegelfechter.com/wordpress/7764/nicht-nur-in-eigener-sache-probleme-beim-e-mail-verkehr 
    0 11 http://www.spiegelfechter.com/wordpress/7977/zum-wohle-des-volkes 
    0 29 http://www.spiegelfechter.com/wordpress/8637/die-intellektuelle-tragodie-des-herrn-k 
    0 34 http://www.spiegelfechter.com/wordpress/8558/cornelia-yzer-durch-die-drehtur-und-zuruck 
    0 37 http://www.spiegelfechter.com/wordpress/8195/die-privatisierungswelle-im-krankenhaussektor-nimmt-erneut-fahrt-auf 
    0 43 http://www.spiegelfechter.com/wordpress/8576/wird-steinbruck-etwa-vom-saulus-zum-paulus-aber-nicht-doch 
    0 46 http://www.spiegelfechter.com/wordpress/8675/terminhinweis-6-11-in-berlin 
    0 48 http://www.spiegelfechter.com/wordpress/8581/was-unsere-steuergesetzgebung-von-den-usa-lernen-konnte 
    0 50 http://www.spiegelfechter.com/wordpress/8571/plan-zur-esm-hebelung-fuhrt-das-bundesverfassungsgericht-ad-absurdum 
    0 56 http://www.spiegelfechter.com/wordpress/8111/finanzpolitische-nagelprobe-fur-spd-und-grune 
    0 61 http://www.spiegelfechter.com/wordpress/8289/deutschland-hat-gewaltiges-aufholpotential 
    0 67 http://www.spiegelfechter.com/wordpress/8216/die-zukunft-des-fiskalpakts-liegt-in-den-handen-der-spd 
    0 67 http://www.spiegelfechter.com/wordpress/8604/steinbruck-und-seine-nebeneinkunfte-wie-die-suddeutsche-zeitung-politische-korruption-verharmlost 
    0 68 http://www.spiegelfechter.com/wordpress/8579/open-thread-syrien-interview-mit-gunter-meyer 
    0 69 http://www.spiegelfechter.com/wordpress/8543/heiner-flassbeck-arbeit-im-markt-oder-markt-fur-arbeit 
    0 70 http://www.spiegelfechter.com/wordpress/8696/gastarzte-ein-weiteres-symptom-der-krankheit-namens-privatisierung 
    0 71 http://www.spiegelfechter.com/wordpress/7803/neue-informationen-zum-ohnesorg-mord 
    0 71 http://www.spiegelfechter.com/wordpress/8606/oskar-lafontaine-bei-den-wirtschaftsimpulsen-2012 
    0 74 http://www.spiegelfechter.com/wordpress/7664/2012-in-der-glaskugel 
    0 74 http://www.spiegelfechter.com/wordpress/7969/am-1-juli-kein-eis-essen 
    0 83 http://www.spiegelfechter.com/wordpress/8183/der-mann-mit-dem-messer-im-rucken 
    0 83 http://www.spiegelfechter.com/wordpress/8680/griechenland-wenn-marktkonfomer-zynismus-ein-land-vor-die-hunde-gehen-lasst 
    0 84 http://www.spiegelfechter.com/wordpress/8328/irrfahrt-im-fiskalsturm 
    0 89 http://www.spiegelfechter.com/wordpress/8523/lebensmittelspekulation-wenn-wirtschaftsethiker-der-unmoral-das-wort-reden 
    0 91 http://www.spiegelfechter.com/wordpress/8626/energiekostendebatte-umverteilung-mit-sozialem-mantelchen 
    0 94 http://www.spiegelfechter.com/wordpress/8326/die-%e2%80%9esponsoren-von-%e2%80%9ebild-fur-alle 
    0 94 http://www.spiegelfechter.com/wordpress/8552/karlsruhe-starkt-die-demokratie-mit-allen-vor-und-nachteilen 
    0 94 http://www.spiegelfechter.com/wordpress/8587/open-thread-steinbruck-wird-vizekanzler-kandidat 
    0 98 http://www.spiegelfechter.com/wordpress/8556/um-wessen-demokratie-geht-es-hier 
    0 101 http://www.spiegelfechter.com/wordpress/8441/gibt-es-ein-free-lunch 
    0 102 http://www.spiegelfechter.com/wordpress/7855/angie-im-wunderland 
    0 102 http://www.spiegelfechter.com/wordpress/8251/open-thread-die-weichen-fur-den-niedergang-der-linkspartei-sind-gestellt 
    0 117 http://www.spiegelfechter.com/wordpress/8492/ezb-unter-beschuss 
    0 120 http://www.spiegelfechter.com/wordpress/8176/uber-das-vorgehen-der-salafistischen-kampagne-%e2%80%9elies 
    0 129 http://www.spiegelfechter.com/wordpress/8426/sparzwang 
    0 136 http://www.spiegelfechter.com/wordpress/8630/haufig-gestellte-fragen-muss-der-steuerzahler-fur-verluste-der-zentralbanken-haften 
    0 164 http://www.spiegelfechter.com/wordpress/8222/irrungen-wirrungen-vermogensabgabe 
    0 170 http://www.spiegelfechter.com/wordpress/8230/europa-spielt-mit-dem-feuer 
    0 170 http://www.spiegelfechter.com/wordpress/8282/volkspartei-gegen-richtungspartei 
    0 172 http://www.spiegelfechter.com/wordpress/8259/schatzbriefe-zum-nulltarif-die-spekulation-mit-der-angst 
    0 175 http://www.spiegelfechter.com/wordpress/8355/island-ein-fanal-der-hoffnung-in-zeiten-der-krise 
    0 286 http://www.spiegelfechter.com/wordpress/8274/open-thread-zum-parteitag-der-linken-in-gottingen 
    0 318 http://www.spiegelfechter.com/wordpress/8237/wenn-avatare-uber-werte-quasseln 
    1 6 http://www.spiegelfechter.com/wordpress/8633/die-politische-okonomie-des-selbstmitleids 
    1 14 http://www.spiegelfechter.com/wordpress/8726/auswege-aus-der-sackgasse 
    1 25 http://www.spiegelfechter.com/wordpress/8206/studie-uber-bild-vom-guten-zum-bosen-wulff 
    1 26 http://www.spiegelfechter.com/wordpress/8722/die-asozialen-hinter-die-asozialen 
    1 27 http://www.spiegelfechter.com/wordpress/8521/seifenblasenwelten 
    1 33 http://www.spiegelfechter.com/wordpress/8685/promille-am-steuer-vorzugsweise-steuerbefreit 
    1 37 http://www.spiegelfechter.com/wordpress/8172/interview-mit-oe1 
    1 44 http://www.spiegelfechter.com/wordpress/8668/wenn-helden-den-mund-aufmachen-2 
    1 50 http://www.spiegelfechter.com/wordpress/7961/gedenken-gedanken 
    1 56 http://www.spiegelfechter.com/wordpress/7654/die-republikanischen-vorwahlen-in-den-usa 
    1 59 http://www.spiegelfechter.com/wordpress/8200/doping-fur-die-fdp 
    1 59 http://www.spiegelfechter.com/wordpress/8500/pop-aktion-und-uberlegenheitskult 
    1 60 http://www.spiegelfechter.com/wordpress/8532/honorarstreit-der-arzte-kehrt-vor-eurer-eigenen-tur 
    1 61 http://www.spiegelfechter.com/wordpress/8266/c-rebell-um-a-l-s-guno-im-wahrheitsrausch 
    1 62 http://www.spiegelfechter.com/wordpress/8249/grexit-und-geuro-die-planspiele-der-finanzlobby 
    1 77 http://www.spiegelfechter.com/wordpress/8548/open-thread-zum-esm-entscheid 
    1 79 http://www.spiegelfechter.com/wordpress/8516/datenschutz-fur-eine-diebesbande 
    1 81 http://www.spiegelfechter.com/wordpress/8188/demographische-folgen-der-eurokrise 
    1 86 http://www.spiegelfechter.com/wordpress/8242/egon-hat-einen-plan-oder-die-olsenbande-der-spd-und-der-fiskalpakt 
    1 91 http://www.spiegelfechter.com/wordpress/8714/the-same-procedure-as-every-year-europa-lugt-sich-selbst-in-die-tasche 
    1 93 http://www.spiegelfechter.com/wordpress/8539/bazooka-mit-eingebauter-ladehemmung 
    1 95 http://www.spiegelfechter.com/wordpress/8654/piratenpartei-politisches-betriebssystem-mit-bugs 
    1 108 http://www.spiegelfechter.com/wordpress/7636/die-eurokrise-als-glaubensfrage 
    1 117 http://www.spiegelfechter.com/wordpress/8566/ein-pladoyer-auf-den-klassenkampf 
    1 127 http://www.spiegelfechter.com/wordpress/8349/krise-der-institutionen 
    1 128 http://www.spiegelfechter.com/wordpress/8527/urheberrecht 
    1 130 http://www.spiegelfechter.com/wordpress/8611/wahlalternative2013 
    1 165 http://www.spiegelfechter.com/wordpress/8618/der-spiegel-und-die-inflation 
    1 178 http://www.spiegelfechter.com/wordpress/8438/die-deutsche-regierung-heizt-die-eurokrise-weiter-an 
    1 187 http://www.spiegelfechter.com/wordpress/8269/zu-neuen-ufern-die-linkspartei-vor-dem-gottinger-parteitag 
    1 191 http://www.spiegelfechter.com/wordpress/7983/kampf-um-die-deutungshoheit-der-gauck-zitate 
    1 217 http://www.spiegelfechter.com/wordpress/8351/merkels-welt 
    1 262 http://www.spiegelfechter.com/wordpress/8319/die-agenda-des-salzwasserokonomen 
    2 19 http://www.spiegelfechter.com/wordpress/7843/punk-economics-europes-austerian-state-of-play 
    2 23 http://www.spiegelfechter.com/wordpress/8178/ein-steuerabkommen-mit-sollbruchstellen 
    2 28 http://www.spiegelfechter.com/wordpress/8690/zwischentone 
    2 33 http://www.spiegelfechter.com/wordpress/8596/wenn-theorie-und-realitat-einfach-nicht-zusammenfinden-wollen 
    2 34 http://www.spiegelfechter.com/wordpress/8562/die-neuerfindung-der-volkswirtschaftslehre 
    2 35 http://www.spiegelfechter.com/wordpress/8621/kurzschluss 
    2 46 http://www.spiegelfechter.com/wordpress/8174/eine-frage-der-ehre 
    2 46 http://www.spiegelfechter.com/wordpress/8483/deutschland-sucht-keinen-spd-kandidaten 
    2 47 http://www.spiegelfechter.com/wordpress/8431/mehr-mut-beim-wahlrecht 
    2 49 http://www.spiegelfechter.com/wordpress/8645/michael-glos-und-sein-amtseid 
    2 55 http://www.spiegelfechter.com/wordpress/8339/demokratie-austeritat-und-die-zwei-europas 
    2 55 http://www.spiegelfechter.com/wordpress/8511/zwei-wege 
    2 56 http://www.spiegelfechter.com/wordpress/8651/die-angst-vor-dem-gelduntergang 
    2 68 http://www.spiegelfechter.com/wordpress/7660/frohes-fest-2 
    2 68 http://www.spiegelfechter.com/wordpress/8323/profite-mit-der-krise-i 
    2 68 http://www.spiegelfechter.com/wordpress/8700/das-schneeballsystem-der-privaten-krankenversicherung-droht-zu-kollabieren 
    2 95 http://www.spiegelfechter.com/wordpress/8573/quotensturm-im-genderwasserglas 
    2 98 http://www.spiegelfechter.com/wordpress/7845/konservativer-zwergenaufstand 
    2 112 http://www.spiegelfechter.com/wordpress/8446/gauck-und-wie-er-die-welt-sieht 
    2 136 http://www.spiegelfechter.com/wordpress/8704/staat-ist-keine-schwabische-hausfrau 
    2 156 http://www.spiegelfechter.com/wordpress/7952/das-konnen-wir-uns-sparen 
    2 158 http://www.spiegelfechter.com/wordpress/8180/wie-okonomische-irrlehren-die-krise-in-europa-vertiefen 
    2 181 http://www.spiegelfechter.com/wordpress/8335/der-energiespar-minister-gibt-bekannt 
    2 279 http://www.spiegelfechter.com/wordpress/8709/konstruktionsfehler-des-grundeinkommens 
    2 290 http://www.spiegelfechter.com/wordpress/8137/der-ganz-reale-judenhass 
    2 394 http://www.spiegelfechter.com/wordpress/7645/robert-misik-uber-die-lust-am-untergang 
    3 23 http://www.spiegelfechter.com/wordpress/8693/wilfried-schmickler-dat-is-doch-normaal 
    3 76 http://www.spiegelfechter.com/wordpress/7772/sopa 
    3 90 http://www.spiegelfechter.com/wordpress/8344/zypern-ein-weiteres-opfer-der-finanzkrise 
    3 94 http://www.spiegelfechter.com/wordpress/8598/abgang-mit-ansage 
    3 114 http://www.spiegelfechter.com/wordpress/7798/der-autismus-der-okonomen 
    3 150 http://www.spiegelfechter.com/wordpress/8256/konig-oskar-dankt-ab 
    3 201 http://www.spiegelfechter.com/wordpress/8495/ungehorter-weckruf 
    3 214 http://www.spiegelfechter.com/wordpress/8133/benzinpreise-im-fokus 
    4 58 http://www.spiegelfechter.com/wordpress/8476/iran-will-die-bombe 
    4 76 http://www.spiegelfechter.com/wordpress/8246/schicksalstage-einer-kanzlerin 
    4 77 http://www.spiegelfechter.com/wordpress/8717/in-gesetz-gegossene-verfassungswidrigkeit 
    4 95 http://www.spiegelfechter.com/wordpress/8202/das-parteiensystem-der-weimarer-republik 
    4 132 http://www.spiegelfechter.com/wordpress/7988/die-merkwurdige-starke-der-burgerlichen 
    4 146 http://www.spiegelfechter.com/wordpress/8225/stefan-sasses-analyse-zur-nrw-wahl 
    4 191 http://www.spiegelfechter.com/wordpress/8294/spanien-und-die-brandstifter-eine-hausgemachte-krise 
    4 200 http://www.spiegelfechter.com/wordpress/7835/zur-steinbach-debatte 
    4 215 http://www.spiegelfechter.com/wordpress/8114/die-fdp-und-die-schlecker-pleite-polittaliban-auser-kontrolle 
    4 228 http://www.spiegelfechter.com/wordpress/8671/die-wurde-des-menschen-ist-antastbar 
    5 101 http://www.spiegelfechter.com/wordpress/7948/der-bundesprasident-als-spiegel-des-deutschen-parteienhasses 
    5 109 http://www.spiegelfechter.com/wordpress/8117/was-hat-es-mit-der-spreizung-der-vermogensschere-und-der-steigerung-der-kapitaleinkommen-auf-sich 
    5 198 http://www.spiegelfechter.com/wordpress/8193/sommertheater-statt-sommermarchen 
    5 422 http://www.spiegelfechter.com/wordpress/7807/occupy-und-die-rechtspopulisten 
    6 120 http://www.spiegelfechter.com/wordpress/8211/die-angst-der-eliten-vor-dem-volk 
    6 238 http://www.spiegelfechter.com/wordpress/7823/die-agonie-der-demokratie 
    6 283 http://www.spiegelfechter.com/wordpress/7917/wer-wird-wulffs-nachfolger 
    6 296 http://www.spiegelfechter.com/wordpress/7941/eigentor 
    9 309 http://www.spiegelfechter.com/wordpress/7931/kandidat-der-herzen-ein-theologe-der-herzlosigkeit 
2

這是另一種使用硒的解決方案。

import urllib, selenium.webdriver 

driver = selenium.webdriver.Firefox() 
driver.get("http://www.spiegelfechter.com/wordpress/page/2") 
comments = driver.find_elements_by_xpath('//span[@class="commentbutton"]') 
for comment in comments: 
    link = comment.find_element_by_xpath('a') 
    comment_count = link.text.split()[0] 
    url = comment.find_element_by_xpath('iframe').get_attribute('src') 
    flattr = urllib.urlopen(url).read() 
    flattr = flattr.split('flattr-count"><span>')[1].split('</span>')[0] 
    print (flattr, comment_count, link.get_attribute('href')) 
driver.close() 

輸出

('1', u'14', u'http://www.spiegelfechter.com/wordpress/8726/auswege-aus-der-sackgasse#comments') 
('1', u'26', u'http://www.spiegelfechter.com/wordpress/8722/die-asozialen-hinter-die-asozialen#comments') 
('4', u'77', u'http://www.spiegelfechter.com/wordpress/8717/in-gesetz-gegossene-verfassungswidrigkeit#comments') 
('1', u'91', u'http://www.spiegelfechter.com/wordpress/8714/the-same-procedure-as-every-year-europa-lugt-sich-selbst-in-die-tasche#comments') 
('2', u'279', u'http://www.spiegelfechter.com/wordpress/8709/konstruktionsfehler-des-grundeinkommens#comments') 
+0

謝謝!安裝通過:'curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python「,然後在Ubuntu上'pip install selenium'。 –

+1

@qräbnö我很高興能爲您服務。 –

0

您可以隨時使用Flattrs開放REST API。他們有一個名爲Check if a thing exists的資源,在那裏你可以發送一個URL。如果有可用的URL,則迴應將是302指向Flattr系統中的事物。在那裏你會得到URL的數量和更多的信息。