Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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
在同一文本中分隔两个文本<;td>;使用Python标记_Python_Html_Parsing_Beautifulsoup - Fatal编程技术网

在同一文本中分隔两个文本<;td>;使用Python标记

在同一文本中分隔两个文本<;td>;使用Python标记,python,html,parsing,beautifulsoup,Python,Html,Parsing,Beautifulsoup,我的HTML知识非常有限,而且我才刚刚开始学习BeautifulSoup,所以我的问题可能没有正确的框架。 我的HTML源代码如下所示 <TD width="15%">Text1</TD> <TD width="85%">Text2<A href="link1">(6)</A> Text3<A href="link2">(4)</A> </TD> url = "my url (static pa

我的HTML知识非常有限,而且我才刚刚开始学习BeautifulSoup,所以我的问题可能没有正确的框架。 我的HTML源代码如下所示

<TD width="15%">Text1</TD>
<TD width="85%">Text2<A href="link1">(6)</A> 
Text3<A href="link2">(4)</A> 
</TD>
url = "my url (static page stored locally)"
soup = BeautifulSoup(open(url),'lxml')
t1_soup=soup.find_all('td',{'width':'15%'})
t2_soup=soup.find_all('td',{'width':'75%'})


text1_str=[]
for item in t1_soup:
text1_str.append(item.text)


text2_str=[]
for item in t2_soup:
text2_str.append(item.text)
第一个for循环清晰地给出了text1,而第二个for循环给出了一个字符串“text2text3”。我不知道如何将它们分开,以便最终将其转换为text1/text2和text1/text3


我编写的python代码可能也不是很有效,如果您有更好的建议,我将不胜感激

您可以通过查找
td
中的所有
a
元素来解决此问题,并获得:

打印
[u'text2',u'text3']

或者,您可以非递归地找到每个
td
中的所有文本节点:


这可能会产生额外的空字符串-请确保对它们进行过滤。

这在@alecxe中非常有效。我不可能独自一人解决这个问题。
for item in t2_soup:
    print([a.previous_sibling.strip() for a in item.find_all("a")])
for item in t2_soup:
    print([text.strip() for text in item.find_all(text=True, recursive=False)])