簡體   English   中英

在python中解析網頁時出現問題

[英]Problems parsing a web page in python

我想解析一個網頁以便檢索有關它的信息(我的確切問題是檢索此列表中的所有項目: http : //www.computerhope.com/vdef.htm )。

但是,我不知道如何去做。

互聯網上的許多教程都以此(簡化) html5lib.parse(urlopen("http://www.computerhope.com/vdef.htm"))html5lib.parse(urlopen("http://www.computerhope.com/vdef.htm"))

但是在那之后,這些教程都沒有解釋如何瀏覽文檔以及轉到所需的html部分。

其他一些教程解釋了如何使用CSSSelector進行操作,但是同樣,所有教程都不以網頁開頭,而是以字符串開頭(例如,這里: http : //lxml.de/cssselect.html )。

因此,我嘗試使用以下方法與網頁一起創建樹: 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> )而導致的,但是由於我不控制該網頁,因此無法解決該問題。

因此,這里有一些問題可以解決我的問題:

  • 如何瀏覽樹?
  • 有沒有辦法使解析器不那么嚴格?

謝謝 !

嘗試使用漂亮的湯,它具有一些出色的功能,並使得在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會做出相應的調整。

至少現在我希望我的答案能被接受。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM