Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.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 试图从格式不良的HTML网站中提取数据_Python_Html_Regex_Html Parsing_Pull - Fatal编程技术网

Python 试图从格式不良的HTML网站中提取数据

Python 试图从格式不良的HTML网站中提取数据,python,html,regex,html-parsing,pull,Python,Html,Regex,Html Parsing,Pull,我最近一直在尝试从一个网站上获取信息,虽然我取得了很大的成功,但也有点困难 我目前一直在使用Regex查找一些信息(在这里我想查看的名称) 像这样。当特定行上有一致的指示器时,这种方法就可以了。然而,我现在有一个问题,我的指标不在这条线上 <td width="28" height="28"><a href="/ratings/top_5_0.html"><img src="/yoweb/images/stat-5.png" width="28" heigh

我最近一直在尝试从一个网站上获取信息,虽然我取得了很大的成功,但也有点困难

我目前一直在使用Regex查找一些信息(在这里我想查看的名称)

像这样。当特定行上有一致的指示器时,这种方法就可以了。然而,我现在有一个问题,我的指标不在这条线上

 <td width="28" height="28"><a href="/ratings/top_5_0.html"><img 
  src="/yoweb/images/stat-5.png" width="28" height="28" border="0"
  alt="Gunning"></a></td>
<td align="left">
  <font size="-1">
      <i><b>Exalted</b></i>/<b>Master</b>
  </font>

崇高的/大师的
特别是想把第二行拉到最后一行,但这第二行可能不是粗体或斜体/没有相同的单词,所以我的指示器必须是“炮击”,因为这是我关心的特定区域。不幸的是,它甚至不总是在每一页的同一行上,所以我不能只看一行来试图找到它。任何建议都很好

编辑

我已经开始尝试学习/使用“靓汤”(感谢你为我指明了方向)

我一开始并不像我想的那么清楚,所以让我试着澄清一下

特别是试图从一个页面中提取排名,如


崇高的/大师的
我特别查找的部分的HTML在上面,并且不总是采用相同的格式(例如,它可以是非粗体、粗体或粗体和斜体。因此,我不确定我可以使用什么方法可靠地从该信息中提取特定的统计数据


我也尝试过通过字体大小进行隔离,但结果的数量不一致,我无法隔离我想要的特定统计数据。

标记肯定不容易处理,但你肯定可以。不要仅仅因为你熟悉或熟悉某个工具就使用它。使用最适合特定情况的工具

在本例中,您需要一个HTML解析器,如

假设您要提取名称(主船员表中以粗体显示的名称):


标记肯定不容易处理,但你肯定可以。不要仅仅因为你熟悉或擅长某个工具就使用它。使用最适合特定情况的工具

在本例中,您需要一个HTML解析器,如

假设您要提取名称(主船员表中以粗体显示的名称):


可能重复的不使用正则表达式解析xml/html。可能重复的不使用正则表达式解析xml/html。感谢您的帮助,不是100%我想要的东西,但Beautiful Soup显然是更强大的工具。我编辑了主要问题并进行了一些澄清。啊,我找到了解决方案。结果我可以使用f搜索ont size和count backward作为生成的列表的结尾每次都是一样的。谢谢你的帮助,不是100%我想要的东西,但是Beauting Soup绝对是更强大的工具。我编辑了主要问题,并做了一些澄清。啊,我找到了解决方案。原来我可以按字体大小和count backward进行搜索ds作为生成列表的结尾,每次都是相同的。
 <td width="28" height="28"><a href="/ratings/top_5_0.html"><img 
  src="/yoweb/images/stat-5.png" width="28" height="28" border="0"
  alt="Gunning"></a></td>
<td align="left">
  <font size="-1">
      <i><b>Exalted</b></i>/<b>Master</b>
  </font>
 <td width="28" height="28"><a href="/ratings/top_5_0.html"><img 
  src="/yoweb/images/stat-5.png" width="28" height="28" border="0"
  alt="Gunning"></a></td>
<td align="left">
  <font size="-1">
      <i><b>Exalted</b></i>/<b>Master</b>
  </font>
>>> import requests
>>> from bs4 import BeautifulSoup
>>> url = "http://meridian.puzzlepirates.com/yoweb/crew/info.wm?crewid=5002373"
>>> 
>>> response = requests.get(url)
>>> 
>>> soup = BeautifulSoup(response.content, "html.parser")
>>> table = soup.find('table', width='330')  # relying on width, yeah, does not look reliable
>>> for b in table.find_all('b'):
...     print(b.get_text(strip=True))
... 
Captain
Senior Officer
Fleet Officer
Officer
Pirate
Cabin Person
Jobbing Pirate