Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(python)美化组语法,检索第一段_Python_Parsing_Syntax_Beautifulsoup - Fatal编程技术网

(python)美化组语法,检索第一段

(python)美化组语法,检索第一段,python,parsing,syntax,beautifulsoup,Python,Parsing,Syntax,Beautifulsoup,尝试以下代码似乎并没有按计划为我工作: 从beautifulsoup导入beautifulsoup definition = """From encyclopedia:\n<i></i><p>Infobox Country<br>fullcountryname=Thailand &#x0E23;&#x0E32;&#x0E0A;&#x0E2D;&#x0E32;&#x0E13;&#x0E32;&

尝试以下代码似乎并没有按计划为我工作: 从beautifulsoup导入beautifulsoup

definition = """From encyclopedia:\n<i></i><p>Infobox Country<br>fullcountryname=Thailand  &#x0E23;&#x0E32;&#x0E0A;&#x0E2D;&#x0E32;&#x0E13;&#x0E32;&#x0E08;&#x0E31;&#x0E01;&#x0E23;&#x0E44;&#x0E17;&#x0E22;Raja-anachakra Thai <br>image_flag= Flag of Thailand.svg <br>image_coa= Coat of arms of Thailand.png <br>image_location= LocationThailand.png <br>nationalmotto= none <br>nationalsong= Phleng Chat <br>nationalflower= n/a <br>nationalanimal= n/a <br>officiallanguages= Thai (<r><i>Thai language</i></r>) <br>populationtotal= 65,444,371 <br>populationrank= 19 <br>populationdensity= 127 <br>countrycapital= <r>Bangkok</r> <br>countrylargestcity= <r>Bangkok</r> <br>areatotal= 514,000 <br>arearank= 49 <br>areawater= n/a <br>areawaterpercent= 0.4 <br>establishedin= <r>April 7</r>, <r>1782</r> <br>leadertitlename=    <br>currency= <r>Baht</r> <br>utcoffset= +7 <br>dialingcode= 66 <br>internettld= .th<p><b>Thailand</b> is a <r>country</r> in Southeast <r>Asia</r>.  Its edges touch <r>Laos</r>, <r>Cambodia</r>, <r>Malaysia</r>, and <r>Myanmar</r> (which is also called Burma.) Thailand was called Siam until 1949."""

print BeautifulSoup(definition).find('p[1]').text
谢谢:)

编辑:我实际上更希望我能得到单词“Infobox”和最后一个标记之间的文本,这样我就可以使用脚本解析实时维基百科页面。

只匹配第一个元素,所以只需使用
find('p')

只匹配第一个元素,所以只需使用
find('p')


您使用的是XPath语法,Beautiful Soup不支持这种语法。Lattyware的回答是正确的。至于编辑中的问题,您可以使用Beautiful Soup 4来大致获得您想要的内容。一些示例代码:

from bs4 import BeautifulSoup
soup = BeautifulSoup(definition)

import re
infobox_start = re.compile("^Infobox") 

start_at = soup.find(text=infobox_start)
for string in start_at.parent.stripped_strings:
    print string

您使用的是XPath语法,Beautiful Soup不支持这种语法。Lattyware的回答是正确的。至于编辑中的问题,您可以使用Beautiful Soup 4来大致获得您想要的内容。一些示例代码:

from bs4 import BeautifulSoup
soup = BeautifulSoup(definition)

import re
infobox_start = re.compile("^Infobox") 

start_at = soup.find(text=infobox_start)
for string in start_at.parent.stripped_strings:
    print string

如果您正在寻找的是Infobox,那么您可能会发现它为您提供了强大的编程功能和更稳定的数据访问。当然,WikipediaAPI和API也提供了这一点


这两种解决方案都有一个学习曲线,但可能比抓取更稳定,更尊重站点。

如果您正在寻找的是信息框,您可能会发现它为您提供了强大的编程功能,并且更稳定地访问数据。当然,WikipediaAPI和API也提供了这一点

这两种解决方案都有一个学习曲线,但可能比刮擦更稳定、更尊重网站

from bs4 import BeautifulSoup
soup = BeautifulSoup(definition)

import re
infobox_start = re.compile("^Infobox") 

start_at = soup.find(text=infobox_start)
for string in start_at.parent.stripped_strings:
    print string