刮痧数据python lxml

时间:2015-03-10 11:09:54

标签: python lxml

我试图通过抓取来检索特定的字符串。然而它似乎什么也没有回报。我使用python和lxml,但似乎没有在标签内返回字符串。

这是html我试图检索

<fieldset>
    <legend align="center">
        <a href="/counterstrike/events/302-cs-go-champions-league">CS:GO Champions League</a>
    </legend>
</fieldset>

以下是我尝试的内容

def get_league(self):
    request = requests.get(self.url)
    tree = html.fromstring(request.content)
    league = tree.xpath("//legend[@class='center']//a")
    return league

2 个答案:

答案 0 :(得分:0)

使用xpath明确选择文本

//legend[@align='center']/a/text()

这个chrome插件在编写lxml查询时有很大帮助 Xpath Helper

答案 1 :(得分:-1)

试试这个,它不是lxml,但你可以用它来进行刮擦。 首先,我要定义自己的功能,它会更容易刮掉

def getBetweenHTML(strSource, strStart,strEnd):
    start = strSource.find(strStart) + len(strStart)
    end = strSource.find(strEnd,start)
    return strSource[start:end]

之后,我会这样做:

def get_league(self):
    import urllib2
    url = urllib2.urlopen(self.url).read()
    getBetweenHTML(url, '<a href="/counterstrike/events/302-cs-go-champions-league">',"</a>")

这对我有用,它只是另一种选择。如果它不是你要找的东西,请告诉我,我会为lxml重写它。