3

我得到一个这样的列表(数字是评论的数量)......

  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()

扁平计数

我有 77,但是如何在 python 中获得 4 ......?我认为 4 是在 javascript 中生成的,我认为它很难在 python 中处理 javascript,但在这种情况下它可能很容易?!

4

4 回答 4

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')
于 2012-12-06T19:19:51.770 回答
1

您可以在 JavaScript 执行使用 PyQt4 的QtWebKit模块来检查 HTML 。然后,您可以使用像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')
于 2012-12-06T17:54:54.353 回答
0

与此同时......我自己的解决方案......(hacky但已删除错误)

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
于 2012-12-06T18:59:17.613 回答
0

您始终可以使用 Flattrs 开放 REST API。他们有一个名为Check if a thing exists的资源,您可以在那里发送一个 URL。如果有可用的 URL,则响应将是 302,指向 Flattr 系统中的事物。在那里,您将获得 URL 具有的 flattr 数量以及更多信息。

于 2013-01-10T10:07:18.510 回答