Php 从网页中提取要使用的数据
为了提供一些背景资料,我在网上出售乐高零件。下订单时的订单总额基于您购买的零件价格和运输成本 运输成本因订单重量和装运国家而异 我不是一个技术爱好者,这就是为什么我需要一些帮助。我知道基本的知识,但其他的不多,虽然我很想学习,在来这里之前我已经试了好几天了 订单页面的源代码,您可以看到重量的唯一地方是:Php 从网页中提取要使用的数据,php,python,html,Php,Python,Html,为了提供一些背景资料,我在网上出售乐高零件。下订单时的订单总额基于您购买的零件价格和运输成本 运输成本因订单重量和装运国家而异 我不是一个技术爱好者,这就是为什么我需要一些帮助。我知道基本的知识,但其他的不多,虽然我很想学习,在来这里之前我已经试了好几天了 订单页面的源代码,您可以看到重量的唯一地方是: <FONT CLASS="fv">Estimated Weight of Order:</FONT></TD><TD ALIGN="RIGHT">
<FONT CLASS="fv">Estimated Weight of Order:</FONT></TD><TD ALIGN="RIGHT"><FONT CLASS="fv">2.17oz 61.44g</FONT>
订单估计重量:2.17盎司61.44克
每个订单都是一样的
所以,我知道我想要的数据在哪里
我需要的帮助是,编码一些东西,从这个网页中提取数据(比如它在一个叫order.com/order.asp的网页中,文档中除了重量之外还包含一堆其他数据),并根据输入的重量导出发货价格。我不知道你是否可以用PHP或Python等来实现这一点
我会在我的服务器上。。。比如说一张根据重量计算运费的表格。现在,我需要的是将order.com网站上的数据导入我自己的服务器。(在我自己的服务器上处理我获取的重量数据,将其与运输成本匹配,提取发票等)。重量数据在订单页面中,总是在一行上,就像我在问题上发布的一样。我刚读到有关网络抓取的文章。也许是一些PHP,它会查看订单页面,直到找到带有权重的行,然后取出权重
非常非常感谢你的帮助,如果我听起来太无知,我会提前道歉,我是。我真的需要一个详细的解释
杰拉尔德
*TL;博士*两个网页。一个在我的服务器中,另一个不在。不在我的服务器(order.asp)中的有以下行:
<FONT CLASS="fv">Estimated Weight of Order:</FONT></TD><TD ALIGN="RIGHT"><FONT CLASS="fv">XX.XXoz XX.XXg</FONT>
订单预计重量:XX.XXoz XX.XXg
我需要的东西,我可以把我的服务器,查询重量从网页上不在我的服务器(order.asp页),并匹配重量与运费价格,我会在我的网页上(作为一个表或可能与ifs)
将有不同权重的不同订单页(order1.asp order2.asp order3.asp)。脚本或任何东西都应该为ea做这些。wpage
谢谢
这将是一个示例页面的源代码,我需要考虑它的重要性。删除了一些敏感信息
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
function killImage(imgName){
if (document.images){
document.images[imgName].src="/images/noImage.gif"
}
}
function killImageM(imgName){
if (document.images){
document.images[imgName].src="/images/noImageM.gif"
}
}
</SCRIPT>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<META HTTP-EQUIV="IMAGETOOLBAR" CONTENT="NO">
<LINK REL="STYLESHEET" TYPE="text/css" HREF="/stylesheet.css?13">
<STYLE TYPE="text/css">body { margin: 15 auto; }</STYLE>
<SCRIPT TYPE="text/javascript" LANGUAGE="javascript" SRC="/js/getAjax.js"></SCRIPT>
<SCRIPT TYPE="text/javascript" LANGUAGE="javascript" SRC="/lytebox/lytebox.js?10"></SCRIPT>
<LINK REL="STYLESHEET" HREF="/lytebox/lytebox.css?13" TYPE="text/css" MEDIA="screen" />
</HEAD>
<BODY BGCOLOR="#666666">
<CENTER>
<TABLE WIDTH="680" CELLPADDING="10" CELLSPACING="0"><TR><TD BGCOLOR="#FFFFFF">
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0"><TR>
<TD><A HREF="/index.asp"><IMG SRC="/images/logowhite.gif" WIDTH="200" HEIGHT="60" ALIGN="ABSMIDDLE" BORDER="0"></A> </TD>
<TD> <FONT SIZE="+3">Order #3953198</FONT></TD></TR></TABLE><P><FONT FACE="Tahoma,Arial" SIZE="2">
<HR NOSHADE SIZE="1" COLOR="#000000"><B>Order Summary</B><HR NOSHADE SIZE="1" COLOR="#000000">
<TABLE WIDTH="100%" CELLPADDING="5" CELLSPACING="0" BORDER="0" BGCOLOR="#EEEEEE"><TR><TD WIDTH="60%" VALIGN="TOP">
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="1" CELLSPACING="0" CLASS="ta">
<TR>
<TD WIDTH="125">Order Date:</TD>
<TD>Nov 20, 2013 17:12</TD>
</TR>
<TR>
<TD>Payment By:</TD>
<TD>PayPal.com</TD>
</TR>
<TR>
<TD>Payment In:</TD>
<TD>Euro</TD>
</TR>
<TR VALIGN="TOP">
<TD>Order Status:</TD>
<TD>Shipped</TD>
</TR>
<TR>
<TD>Changed:</TD>
<TD>Nov 22, 2013 14:15</TD>
</TR>
<TR>
<TD NOWRAP>Total Items:</TD>
<TD>24</TD>
</TR>
<TR>
<TD NOWRAP>Unique Items (Lots):</TD>
<TD>2</TD>
</TR>
<TR>
<TD NOWRAP>Invoiced:</TD>
<TD>Nov 21, 2013 08:56</TD>
</TR>
<TR VALIGN="TOP">
<TD NOWRAP>Shipping Method:</TD>
<TD>Registered<BR><FONT CLASS="fv">By default, with tracking number and insured up to 30 euros only.</FONT></TD>
</TR>
</TABLE>
</TD><TD WIDTH="40%" VALIGN="TOP">
<TABLE WIDTH="100%" BORDER="0" CELLPADDING="1" CELLSPACING="0" CLASS="ta">
<TR>
<TD>Order Total:</TD>
<TD ALIGN="RIGHT">EUR 8.92</TD>
</TR>
<TR>
<TD>Shipping:</TD>
<TD ALIGN="RIGHT">EUR 4.85</TD>
</TR>
<TR>
<TD>Insurance:</TD>
<TD ALIGN="RIGHT">EUR 0.00</TD>
</TR>
<TR>
<TD>Additional Charges 1:</TD>
<TD ALIGN="RIGHT">EUR 0.00</TD>
</TR>
<TR>
<TD>Additional Charges 2:</TD>
<TD ALIGN="RIGHT">EUR 0.00</TD>
</TR>
<TR>
<TD>Credit:</TD>
<TD ALIGN="RIGHT">EUR 0.00</TD>
</TR>
<TR>
<TD>Grand Total:</TD>
<TD ALIGN="RIGHT"><B>EUR 13.77</TD>
</TR>
<TR>
<TD>Orders in this Store:</TD>
<TD ALIGN="RIGHT">1</TD>
</TR>
</TABLE>
</TD></TR>
</TABLE><HR NOSHADE SIZE="1" COLOR="#000000"><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%" CLASS="ta"><TR><TD><B>Items in Order</B></TD></TR></TABLE><HR NOSHADE SIZE="1" COLOR="#000000"><TABLE WIDTH="100%" BORDER="0" CELLSPACING="1" CELLPADDING="3" CLASS="ta"><TR BGCOLOR="#C0C0C0"><TD><B>Image</B></TD><TD ALIGN="CENTER"><B>Condition</B></TD><TD><B>Item Description</B></TD><TD ALIGN="RIGHT"><B>Lots</B></TD><TD ALIGN="RIGHT"><B>Qty</B></TD><TD ALIGN="RIGHT"><B>Left</B></TD><TD ALIGN="RIGHT"><B>Price</B></TD><TD ALIGN="RIGHT"><B>Total</B></TD><TD ALIGN="RIGHT"><B>Weight</B></TD></TR><TR><TD COLSPAN="2" BGCOLOR="#C0C0C0"><B>Batch #1</B></TD><TD COLSPAN="7" BGCOLOR="#C0C0C0"><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%"><TR><TD><FONT CLASS="fv">Submitted on Nov 20, 2013 17:12</TD><TD ALIGN="RIGHT"><A HREF="/orderDetail.asp?ID=3953198&viewItems=Y&orderBatchID=1"><IMG SRC="/images/printer16.png" WIDTH="16" HEIGHT="16" BORDER="0" ALT="Print Batch" TITLE="Print Batch"></A><IMG SRC="/images/dot.gif" WIDTH="5" HEIGHT="1"><IMG SRC="/images/invoice16YC.gif" WIDTH="16" HEIGHT="16" ALT="Batch Invoiced" TITLE="Batch Invoiced"></TD></TR></TABLE></TD></TR><TR BGCOLOR="FFFFFF"><TD HEIGHT="60"><CENTER><A ID='imgLink0' HREF='/catalogItemPic.asp?P=60208' REL='blcatimg'><IMG ALT="Lot ID: 48295541 Part No: 60208 Name: Wheel 31mm D. x 15mm Technic" TITLE="Lot ID: 48295541 Part No: 60208 Name: Wheel 31mm D. x 15mm Technic" BORDER='0' WIDTH='80' HEIGHT='60' SRC='http://img.bricklink.com/P/86/60208.gif' NAME='img0' ID='img0' onError="killImage('img0');"></A><BR><FONT FACE='Tahoma,Arial' SIZE='1'>*</FONT></TD><TD ALIGN="CENTER"><B>New</B></TD><TD><SPAN CLASS="u"><A HREF="/catalogItem.asp?P=60208"><FONT COLOR="#000000">Light Bluish Gray Wheel 31mm D. x 15mm Technic </FONT></A></SPAN><BR><FONT CLASS="fv">AB4</FONT></TD><TD ALIGN="RIGHT"> </TD><TD ALIGN="RIGHT">12</TD><TD ALIGN="RIGHT">X</TD><TD ALIGN="RIGHT">EUR 0.11</TD><TD ALIGN="RIGHT">EUR 1.32</TD><TD ALIGN="RIGHT"><FONT CLASS="fv">38.16g</TD></TR><TR BGCOLOR="EEEEEE"><TD HEIGHT="60"><CENTER><A ID='imgLink1' HREF='/catalogItemPic.asp?P=6179' REL='blcatimg'><IMG ALT="Lot ID: 49014568 Part No: 6179 Name: Tile, Modified 4 x 4 with Studs on Edge" TITLE="Lot ID: 49014568 Part No: 6179 Name: Tile, Modified 4 x 4 with Studs on Edge" BORDER='0' WIDTH='80' HEIGHT='60' SRC='http://img.bricklink.com/P/86/6179.gif' NAME='img1' ID='img1' onError="killImage('img1');"></A><BR><FONT FACE='Tahoma,Arial' SIZE='1'>*</FONT></TD><TD ALIGN="CENTER"><B>New</B></TD><TD><SPAN CLASS="u"><A HREF="/catalogItem.asp?P=6179"><FONT COLOR="#000000">Light Bluish Gray Tile, Modified 4 x 4 with Studs on Edge </FONT></A></SPAN><BR><FONT CLASS="fv">AJ2</FONT></TD><TD ALIGN="RIGHT"> </TD><TD ALIGN="RIGHT">12</TD><TD ALIGN="RIGHT">X</TD><TD ALIGN="RIGHT">EUR 0.633</TD><TD ALIGN="RIGHT">EUR 7.596</TD><TD ALIGN="RIGHT"><FONT CLASS="fv">23.28g</TD></TR><TR BGCOLOR="#DDDDDD"><TD COLSPAN="3"><B>Batch Total:</B></TD><TD ALIGN="RIGHT">2</TD><TD ALIGN="RIGHT">24</TD><TD></TD><TD> </TD><TD ALIGN="RIGHT">EUR 8.92</TD><TD ALIGN="RIGHT"><FONT CLASS="fv">61.44g</TD></TR><TR BGCOLOR="#C0C0C0"><TD COLSPAN="3"><B>Order Total:</B></TD><TD ALIGN="RIGHT">2</TD><TD ALIGN="RIGHT">24</TD><TD></TD><TD> </TD><TD ALIGN="RIGHT">EUR 8.92</TD><TD ALIGN="RIGHT"></TD></TR><TR><TD COLSPAN="10" ALIGN="RIGHT" BGCOLOR="#EEEEEE"><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="100%"><TR><TD><FONT CLASS="fv">Estimated Weight of Order:</FONT></TD><TD ALIGN="RIGHT"><FONT CLASS="fv">2.17oz 61.44g</FONT></TD></TR></TABLE></TD></TR></TABLE><TABLE WIDTH="100%" BORDER="0" CELLPADDING="1" CELLSPACING="0" CLASS="ta"><TR><TD COLSPAN="2" CLASS="fv" ALIGN="RIGHT"><A HREF="/contact.asp?orderID=3953198">Contact your buyer about this order</A><BR> </TD></TR></TABLE><HR NOSHADE SIZE="1" COLOR="#000000"><FONT CLASS="fv"><CENTER>This order will be purged from the BrickLink website on May 20, 2014.</CENTER></FONT></TABLE><FONT CLASS="fv"><P><CENTER><A HREF="Javascript:window.history.go(-1)"><FONT COLOR="#FFFFFF">Back to Orders</FONT></A> | <A HREF="/orderDetail.asp?ID=3953198&viewChk=Y"><FONT COLOR="#FFFFFF">Show Temporary Checkboxes</FONT></A> | <A HREF="/orderDetail.asp?ID=3953198&viewCategory=Y"><FONT COLOR="#FFFFFF">Show Categories</FONT></A> | <A HREF="/orderDetail.asp?ID=3953198&viewGB=N"><FONT COLOR="#FFFFFF">Consolidate Batches</FONT></A> | <A HREF="/orderSettings.asp"><FONT COLOR="#FFFFFF">My Settings</FONT></A><P><A HREF="orderDetail.asp?ID=3953198&viewRemain=N"><FONT COLOR="#FFFFFF">Hide Qty Left in My Inventory</FONT></A> | <A HREF="orderDetail.asp?ID=3953198&viewWeight=N"><FONT COLOR="#FFFFFF">Hide Item Weight</FONT></A> | <A HREF="orderDetail.asp?ID=3953198&viewCost=Y"><FONT COLOR="#FFFFFF">Show My Cost</FONT></A> | <A HREF="orderDetail.asp?ID=3953198&viewItems=Y"><FONT COLOR="#FFFFFF">Show Only Items in Order</FONT></A> | <A HREF="orderEdit.asp?ID=3953198"><FONT COLOR="#FFFFFF">Edit Order</FONT></A>
函数killImage(imgName){
if(document.images){
document.images[imgName].src=“/images/noImage.gif”
}
}
函数killImageM(imgName){
if(document.images){
document.images[imgName].src=“/images/noImageM.gif”
}
}
正文{页边距:15自动;}
订单#3953198
订单摘要
订购日期:
2013年11月20日17:12
付款方式:
贝宝网
付款方式:
欧元
订单状态:
装船
改变:
2013年11月22日14:15
项目总数:
24
独特项目(批次):
2.
发票:
2013年11月21日08:56
装运方式:
默认情况下注册
,带有跟踪号码,投保金额仅为30欧元。
订单总数:
8.92欧元
航运:
4.85欧元
保险:
0.00欧元
附加费用1:
0.00欧元
附加费用2:
0.00欧元
学分:
0.00欧元
总计:
13.77欧元
本店订单:
1.
11月20日提交的订单项目,2013年17:12
*新的
AB4 12XEUR 0.11EUR 1.3238.16g
*新的
AJ2 12XEUR 0.633EUR 7.59623.28G批次总计:224 EUR 8.9261.44g总计:224 EUR 8.92预计订单重量:2.17oz 61.44g
此订单将于2014年5月20日从BrickLink网站上清除。
编写完整的代码时,如果不查看您希望刮取的页面,会有点困难,但您应该能够使用以下代码来获得所需的内容。下面的代码读取一个名为“html.txt”的文件,查找该文本文件中的所有订单,查找以oz和grams为单位的总重量值,并将该数据写入名为foundWeights.txt的输出文件。要运行代码,只需将html保存在名为“html.txt”的文本文件中,将下面的代码保存在名为“findweights.py”的文件中,然后将这两个文件放在同一文件夹中。然后,打开一个shell或终端窗口,导航到该文件夹,并键入“python findweights.py”,一个文本文件将立即出现在同一文件夹中,其中包含您的数据
html = open("html.txt").read()
out = open("foundWeights.txt", "w")
#split html on order number
legoOrders = html.split("Order #")
for order in legoOrders[1:]:
print order
orderNumber = order.split("<")[0]
weightString = order.split('Estimated Weight of Order:</FONT></TD><TD ALIGN="RIGHT"><FONT CLASS="fv">')[1]
splitWeightString = weightString.split(' ')
splitStringFinal = splitWeightString[1].split("<")
grams = splitStringFinal[0]
ozs = weightString.split(' ')[0]
out.write(str(orderNumber) + "\t" + str(grams) + "\t" + str(ozs) + "\n"
font
元素很久以前就被弃用了。哦,我知道这一点。这不是我的网站,我是在用它向制作者付费。该网站将在明年进行改造,因为它是从旧的90年代。然而,问题仅仅是将该行上的数据拉到网页上,然后用它取出一些数据。谢谢你的阅读。你有一个示例网页吗?网页上有没有标明运费?@duhaime我会在我的服务器上。。。比如说一张根据重量计算运费的表格。现在,我需要的是将order.com网站上的数据导入我自己的服务器。(在我自己的服务器上处理我获取的重量数据,将其与运输成本匹配,提取发票等)。重量数据在订单页面中,总是在一行上,就像我在问题上发布的一样。我刚读到有关网络抓取的文章。也许是一些PHP,它会查看订单页面,直到找到带有权重的行,然后取出权重?谢谢。老实说,我以前从未使用过Python。据我所知,这样做的目的是拉出第一行“估计重量…”和第一行“估计重量…”之间的任何东西,对吗?我将在网上查看如何保存它并使用它搜索表和
3953198 61.44g 2.17oz