我正在使用Python推出有人拥有的居住国。国家所在的行(地址伪造):
<HR NOSHADE SIZE="1" COLOR="#000000"><B>Buyer Information</B><HR NOSHADE SIZE="1" COLOR="#000000">
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="1" CELLSPACING="0" CLASS="ta"><TR BGCOLOR="#EEEEEE">
<TD WIDTH="25%"> Username:</TD>
<TD WIDTH="75%"><B>joedane</B> <A HREF="http://www.bricklink.com/feedback.asp?u=joedane">(6)</A><IMG BORDER=0 ALT="" SRC="/images/dot.gif" ALIGN="ABSMIDDLE" WIDTH="4" HEIGHT="16"></TD></TR><TR BGCOLOR="#EEEEEE">
<TD> E-Mail:</TD><TD><A HREF="mailto:lala@lala.la">lala@lala.la</A></TD></TR><TR BGCOLOR="#EEEEEE">
<TD WIDTH="25%" VALIGN="TOP"> Name & Address:</TD>
<TD WIDTH="75%">Joe Dane
<BR>XXXX 24
<BR>12345 QWERTY
<BR>Germany</TD>
</TR></TABLE>
<HR NOSHADE SIZE="1" COLOR="#000000"><B>Seller Information</B><HR NOSHADE SIZE="1" COLOR="#000000">
我需要在倒数第三排得到'德国'。但是,国家和地址每次都会有所不同,所以我需要一种方法来拉出这个国家,但不要取决于之前的地址。
我试过了:
#get Shipping Destination
shippingDest = order.split('</TD></TR></TABLE><HR NOSHADE SIZE="1" COLOR="#000000"><B>Seller Information</B>')[0].split('<BR>')[1]
但它并没有停留在线前找到的第一个BR上。希望我的分裂概念是错误的。这应该是一个容易的问题。有帮助吗?
编辑:
实际代码仍在继续,在卖家信息之后,与德国的买家信息中的代码类似,但与我自己的国家/地区相似。该剧本产生了西班牙,我自己的国家。我可以以某种方式让它跳过我的国家去第二个吗?如果您要倒退,那将是卖家信息之后的那个。
这是直到html结尾的实际代码。在德国之后,它总是一样的。
<HR NOSHADE SIZE="1" COLOR="#000000"><B>Buyer Information</B><HR NOSHADE SIZE="1" COLOR="#000000">
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="1" CELLSPACING="0" CLASS="ta"><TR BGCOLOR="#EEEEEE">
<TD WIDTH="25%"> Username:</TD>
<TD WIDTH="75%"><B>joedane</B> <A HREF="http://www.bricklink.com/feedback.asp?u=joedane">(6)</A><IMG BORDER=0 ALT="" SRC="/images/dot.gif" ALIGN="ABSMIDDLE" WIDTH="4" HEIGHT="16"></TD></TR><TR BGCOLOR="#EEEEEE">
<TD> E-Mail:</TD><TD><A HREF="mailto:lala@lala.la">lala@lala.la</A></TD></TR><TR BGCOLOR="#EEEEEE">
<TD WIDTH="25%" VALIGN="TOP"> Name & Address:</TD>
<TD WIDTH="75%">Joe Dane
<BR>XXXX 24
<BR>12345 QWERTY
<BR>Germany</TD>
</TR></TABLE>
<HR NOSHADE SIZE="1" COLOR="#000000"><B>Seller Information</B><HR NOSHADE SIZE="1" COLOR="#000000">
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="1" CELLSPACING="0" CLASS="ta">
<TR BGCOLOR="#EEEEEE">
<TD WIDTH="25%"> Username:</TD><TD WIDTH="75%"><B>Brick_Top</B> <A HREF="http://www.bricklink.com/feedback.asp?u=Brick_Top">(466)</A>
<A HREF="http://www.bricklink.com/help.asp?helpID=54">
<IMG ALT="" WIDTH="16" HSPACE="3" ALIGN="ABSMIDDLE" HEIGHT="16" BORDER="0" SRC="/images/bricks/star2.png"></A>
<A HREF="http://www.bricklink.com/aboutMe.asp?u=Brick_Top">
<IMG ALT="" WIDTH="18" ALIGN="ABSMIDDLE" HEIGHT="16" BORDER="0" SRC="/images/bricks/me.png"></A></TD></TR><TR BGCOLOR="#EEEEEE">
<TD> Store Name:</TD><TD><B>Top Bricks from Brick Top</B></TD></TR><TR BGCOLOR="#EEEEEE">
<TD> Store Link:</TD><TD><A HREF="/store.asp?p=Brick_Top">http://www.bricklink.com/store.asp?p=Brick_Top</A></TD></TR><TR BGCOLOR="#EEEEEE">
<TD> E-Mail:</TD><TD><A HREF="mailto:myemail@gmail.com">myemail@gmail.com</A></TD></TR><TR BGCOLOR="#EEEEEE">
<TD WIDTH="25%" VALIGN="TOP"> Name & Address:</TD>
<TD WIDTH="75%">Gerald Me
<BR>qwerty 234
<BR>Sevilla 41500
<BR>Spain</TD></TR></TABLE>
我想要的只是那个德国(这两个国家中的第一个国家)。很多,非常感谢。
编辑2.0:
有趣的是,我能够只添加[-5]。我不太了解,但我的猜测是它找到了第一张桌子的第五个BR。
from bs4 import BeautifulSoup
import sys
soup = BeautifulSoup(open(sys.argv[1], 'r'), 'html')
country = soup.find('table').find_all('br')[-5]
print(country.find_next(text=True).string)
答案 0 :(得分:4)
我建议你使用像beautifulsoup这样的html
解析器。它找到表的最后<br>
并从那里搜索下一个兄弟,包括返回国家的文本节点:
from bs4 import BeautifulSoup
import sys
soup = BeautifulSoup(open(sys.argv[1], 'r'), 'html')
country = soup.find('table').find_all('br')[-1]
print(country.find_next(text=True).string)
像以下一样运行:
python3 script.py htmlfile
产量:
Germany
答案 1 :(得分:1)
您可以使用regular expression
target_str="<HR NOSHADE SI..."
results=re.findall(r"<BR>\w*{20}</TD>", target_str)
for country in results:
print country //the out put will be <BR>Germany</TD>
//you can do some other things
//to pull Germany out of <BR>Germany</TD>