-1

Web ページに関する情報を取得するために Web ページを解析したいと思います (私の正確な問題は、このリスト内のすべての項目を取得することです: http://www.computerhope.com/vdef.htm )。

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

インターネット上の多くのチュートリアルは、これで始まります(簡略化): html5lib.parse(urlopen("http://www.computerhope.com/vdef.htm"))

しかし、その後、ドキュメントを参照して探している html 部分に移動する方法を説明するチュートリアルはありません。

他のいくつかのチュートリアルではそれを行う方法を説明していますCSSSelectorが、すべてのチュートリアルは Web ページではなく文字列で始まります (例: 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>) があるために発生しますが、Web ページを制御していないため、それを回避できません。

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

  • ツリーを参照するにはどうすればよいですか?
  • パーサーの厳密性を下げる方法はありますか?

ありがとうございました !

4

1 に答える 1

2

美しいスープを試してみてください。いくつかの優れた機能があり、Python での解析が非常に簡単になります。

https://www.crummy.com/software/BeautifulSoup/bs4/doc/でドキュメントを確認してください。

編集:

@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 がそれに応じて調整を行うことを願っています。

少なくとも今は、私の答えが支持されることを願っています。

于 2016-07-27T17:50:29.263 に答える