2016-11-16 11 views
2

Webページを解析して、ExcelまたはCSVファイル内のデータを保存しようとしています。xml.etree.ElementTree.ParseError:スクリプトの "<"記号のため、整形式ではありません(無効なトークン)

import urllib.request 
import xml.etree.ElementTree as ET 

url = "http://rusdrama.com/afisha" 
response = urllib.request.urlopen(url) 
content = response.read() 
root = ET.fromstring(content) 

私は、次のエラーを得たのElementTree fromstring方法を使用してページを解析:

Traceback (most recent call last): 
    File "D:/PythonProjects/PythonMisc/theater_reader.py", line 7, in <module> 
    root = ET.fromstring(content) 
    File "D:\Python\Python35\lib\xml\etree\ElementTree.py", line 1333, in XML 
    parser.feed(text) 
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 49, column 14 

受信したページの一部は以下の通りです:

<script> 
    jQuery(document).ready(function(){ 
    jQuery(window).scroll(function() { 
     var scroll = jQuery(window).scrollTop(); 
     if (scroll >= 100) { 
      jQuery(".t3-header").addClass("solid"); 
     } 
     if (scroll <= 100) { 
      jQuery(".t3-header").removeClass("solid"); 
     } 
    }); 
    }) 
</script> 

、具体的に行49:

if (scroll <= 100) { 

問題は、開始タグ記号として処理されているように見える角括弧を開くことです。 私はいくつかの同様の質問を見ましたが、この状況をどう対処するのか理解できません。

+1

あなたはXMLパーサでこれを開いています。 XMLでは '<', '>'と '&'をエスケープする必要があります。 – njzk2

+1

代わりにHTMLパーサーを使用することができます。 – njzk2

+0

ありがとう!私はxmlパーサを使用するとは思わなかった) –

答えて

3

XMLパーサーでHTMLを解析しようとしています。適切なツール、HTMLパーサーを代わりに使用してください。BeautifulSoupまたはlxml.htmlが最も一般的です。

デモ:

>>> from bs4 import BeautifulSoup 
>>> import urllib.request 
>>> 
>>> url = "http://rusdrama.com/afisha" 
>>> response = urllib.request.urlopen(url) 
>>> 
>>> soup = BeautifulSoup(response, "html.parser") 
>>> print(soup.title.get_text()) 
Афиша Харьковского академического русского драматического театра Пушкина 
+0

ありがとう!それはわたしを助ける。 –

関連する問題