Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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
Php 从网页中提取要使用的数据_Php_Python_Html - Fatal编程技术网

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&nbsp;&nbsp;&nbsp;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&nbsp;&nbsp;&nbsp;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>&nbsp;</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&nbsp;8.92</TD>



 </TR>

 <TR>

  <TD>Shipping:</TD>

  <TD ALIGN="RIGHT">EUR&nbsp;4.85</TD>



 </TR>

 <TR>

  <TD>Insurance:</TD>

  <TD ALIGN="RIGHT">EUR&nbsp;0.00</TD>



 </TR>

 <TR>

  <TD>Additional&nbsp;Charges&nbsp;1:</TD>

  <TD ALIGN="RIGHT">EUR&nbsp;0.00</TD>



 </TR>

 <TR>

  <TD>Additional&nbsp;Charges&nbsp;2:</TD>

  <TD ALIGN="RIGHT">EUR&nbsp;0.00</TD>



 </TR>

 <TR>

  <TD>Credit:</TD>

  <TD ALIGN="RIGHT">EUR&nbsp;0.00</TD>



 </TR>



 <TR>

  <TD>Grand&nbsp;Total:</TD>

  <TD ALIGN="RIGHT"><B>EUR&nbsp;13.77</TD>



 </TR>



 <TR>

  <TD>Orders&nbsp;in&nbsp;this&nbsp;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">&nbsp;</TD><TD ALIGN="RIGHT">12</TD><TD ALIGN="RIGHT">X</TD><TD ALIGN="RIGHT">EUR&nbsp;0.11</TD><TD ALIGN="RIGHT">EUR&nbsp;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">&nbsp;</TD><TD ALIGN="RIGHT">12</TD><TD ALIGN="RIGHT">X</TD><TD ALIGN="RIGHT">EUR&nbsp;0.633</TD><TD ALIGN="RIGHT">EUR&nbsp;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>&nbsp;</TD><TD ALIGN="RIGHT">EUR&nbsp;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>&nbsp;</TD><TD ALIGN="RIGHT">EUR&nbsp;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&nbsp;&nbsp;&nbsp;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>&nbsp;</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('&nbsp;&nbsp;&nbsp;')
  splitStringFinal = splitWeightString[1].split("<")

  grams = splitStringFinal[0]
  ozs = weightString.split('&nbsp')[0]

  out.write(str(orderNumber) + "\t" + str(grams) + "\t" + str(ozs) + "\n"

font
元素很久以前就被弃用了。哦,我知道这一点。这不是我的网站,我是在用它向制作者付费。该网站将在明年进行改造,因为它是从旧的90年代。然而,问题仅仅是将该行上的数据拉到网页上,然后用它取出一些数据。谢谢你的阅读。你有一个示例网页吗?网页上有没有标明运费?@duhaime我会在我的服务器上。。。比如说一张根据重量计算运费的表格。现在,我需要的是将order.com网站上的数据导入我自己的服务器。(在我自己的服务器上处理我获取的重量数据,将其与运输成本匹配,提取发票等)。重量数据在订单页面中,总是在一行上,就像我在问题上发布的一样。我刚读到有关网络抓取的文章。也许是一些PHP,它会查看订单页面,直到找到带有权重的行,然后取出权重?谢谢。老实说,我以前从未使用过Python。据我所知,这样做的目的是拉出第一行“估计重量…”和第一行“估计重量…”之间的任何东西,对吗?我将在网上查看如何保存它并使用它搜索表和
3953198 61.44g  2.17oz