2016-07-27 17 views
-1

Webページを解析してその情報を取得したいのですが(私の問題はこのリストのすべての項目を取得することです:http://www.computerhope.com/vdef.htm)。PythonでWebページを解析する際の問題

しかし、私はそれを行う方法を理解できません。

これでインターネットスタート(簡体字)のチュートリアルがたくさん: html5lib.parse(urlopen("http://www.computerhope.com/vdef.htm"))

しかし、その後、チュートリアルのどれも私が文書を閲覧し、私が探していますHTML部分を行くことができる方法を説明していません。

CSSSelectorで行う方法を説明しているチュートリアルもありますが、すべてのチュートリアルはウェブページではなく文字列で始まります(例:http://lxml.de/cssselect.html)。

だから私は、これを使用してWebページでツリーを作成しようとしました: fromstring(urlopen("http://www.computerhope.com/vdef.htm").read()) が、私はこのエラーを得た: lxml.etree.XMLSyntaxError: Specification mandate value for attribute itemscope, line 3, column 28を。このエラーは、指定されていない属性(例:<input attribute></input>)があるためですが、ウェブページを管理していないため、回避できません。

だからここに私の問題を解決できるいくつかの質問があります:

  • がどのようにツリーを参照することができますか?
  • パーサをあまり厳しくする方法はありますか?

ありがとうございます!

+0

XPathを探します。これは、XMLのような構造を解析するための非常に強力なツールです。 –

+0

なぜetreeを使ってhtmlを解析していますか? –

答えて

1

美しいスープを試してみてください。いくつかの優れた機能があり、Pythonでの解析が非常に簡単です。 https://www.crummy.com/software/BeautifulSoup/bs4/doc/

EDITでそのドキュメントの

チェック:

@mzjnが指摘したように、私は思ったので、私は、(それがダウンして投票する理由である)の回答でコードサンプルが含まれていませんでしたがOPは自分自身でそれを理解しなければならない。私は彼を助けることができると思いますので、ここでそれは、リスト内のすべての項目を出力コード

from bs4 import BeautifulSoup 
import requests 

page = requests.get('http://www.computerhope.com/vdef.htm') 
soup = BeautifulSoup(page.text) 
tables = soup.findChildren('table') 
for i in (tables[0].findAll('a')): 
    print(i.text) 

がある、私はOPはそれに応じて調整を行うことを願っています。

少なくとも今私は私の答えがupvoted得ることを望んでいる。

+0

なぜ私はダウン投票を知ることができますか?私の答えが間違っていることを意味しないライブラリが気に入らなければ、それは単に私たちの意見が異なることを意味します。 – Bharat

+2

私はdownvoteをしませんでしたが、これは実際には質問に答える詳細なしでこれはリンクのみの答えですので、あなたはdownvoteを持っていると思います.. – mzjn

関連する問題