2017-07-26 1 views
0

スクラップされたhtmlページにSQLエラーがあり、htmlタグが閉じられていないことに気付きましたが、xpathセレクタは閉じられていないタグ内のものを検出できません。スクラップ検出タグが閉じていない

タグを検出するにはどうすればよいですか?

おかげ

+0

をいずれか、またはあなたのコードとあなたがスクラップにしようとしているウェブサイトならば、我々は助けることができるようにエラーを追加してください。 。 – Mani

+0

ようこそスタックオーバーフロー!デバッグの助けを求める質問(「なぜこのコードは動作しませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体の中でそれを再現するのに必要な最短コードが含まれていなければなりません。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve]を作成する方法。あなたの*質問を改善するために "編集"リンクを使用してください - コメントでより多くの情報を追加しないでください。ありがとう! – GhostCat

答えて

1

壊れたHTML/XMLの内容を修正しようとツールとライブラリがたくさんあります。しかしscrapyはすでに我々はまた、壊れた文書修正するためにそれを使用することができ、解析のためのlxmlライブラリ使用されているので:

from lxml import etree 
from scrapy import Selector 

def parse(self, response): 
    # lets pretend we have this unclosed <li> in our response 
    print(response.body) 
    #"<ul><li>foo</ul>" 
    # create an lxml parser with recover parameter 
    parser = etree.XMLParser(recover=True) 

    # retrieve xml document 
    broken_body = etree.tostring(response.selector.root) 
    clean_doc = etree.fromstring(broken_body, parser=parser) 
    selector = Selector(root=clean_doc) 
    selector.xpath("//li/text()").extract_first() 
    # foo 
+0

グラニトサウルスありがとう! – Vinceska

関連する問題