wmic process where caption="java.exe" get caption,commandline /value "D:\NeoLang\Java\JDK\jdk_x64_1.8.0_77\bin\java.exe" -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath "D:\NeoLang\Java\JavaContainer\apache-tomcat-8.5.16-windows-x64\bin\bootstrap.jar;D:\NeoLang\Java\JavaContainer\apache-tomcat-8.5.16-windows-x64\bin\tomcat-juli.jar" -Dcatalina.base="D:\NeoLang\Java\JavaContainer\apache-tomcat-8.5.16-windows-x64" -Dcatalina.home="D:\NeoLang\Java\JavaContainer\apache-tomcat-8.5.16-windows-x64" -Djava.io.tmpdir="D:\NeoLang\Java\JavaContainer\apache-tomcat-8.5.16-windows-x64\temp" org.apache.catalina.startup.Bootstrap start "C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe" -Djetty.home=D:/GitHub/Jetty/binary/jetty-distribution-9.4.18.v20190429 -Djetty.base=D:/GitHub/Jetty/binary/jetty-distribution-9.4.18.v20190429 -Djava.io.tmpdir=C:/Users/Hansen/AppData/Local/Temp -jar D:/GitHub/Jetty/binary/jetty-distribution-9.4.18.v20190429/start.jar jetty.state=D:/GitHub/Jetty/binary/jetty-distribution-9.4.18.v20190429/jetty.state jetty-started.xml
Author Archives: neohope
R语言做简单线性规划
首先要安装线性规划扩展包
install.packages("lpSolve")
例1:
某工厂甲、乙两种产品,每件甲产品要耗钢材2kg、煤2kg、产值为120元;每件乙产品要耗钢材3kg,煤1kg,产值为100元。现钢厂有钢材600kg,煤400kg,试确定甲、乙两种产品各生产多少件,才能使该厂的总产值最大?
解:
# 优化方向: # maximize # 目标函数: # f(X1,X2)=120X1+100X2 # 约束条件: # 2X1+3X2<=600 # X1+X2<=400 #引用lpSolve library (lpSolve) #求解 f.obj <- c (120, 100) f.con <- matrix ( c (2, 3, 1, 1), nrow = 2, byrow = TRUE ) f.dir <- c ( "<=" , "<=" ) f.rhs <- c (600, 400) lp.result <- lp ( "max" , f.obj, f.con, f.dir, f.rhs) #输出结果 lp.result #Success: the objective function is 36000 #输出解 lp.result$solution #[1] 300 0
例2:
某工厂要做100套钢架,每套用长为2.9m,2.1m,1.5m的圆钢各一根。已知原料每根长7.4m,问:应如何下料,可使所用原料最省?(可选方案如下)
| 可选方案 | 方案1 | 方案2 | 方案3 | 方案4 | 方案5 |
| 2.9m | 1 | 2 | 0 | 1 | 0 |
| 2.1m | 0 | 0 | 2 | 2 | 1 |
| 1.5m | 3 | 1 | 2 | 0 | 3 |
| 合计 | 7.4 | 7.3 | 7.2 | 7.1 | 6.6 |
| 剩余料头 | 0 | 0.1 | 0.2 | 0.3 | 0.8 |
解:
# 优化方向: # minimize # 目标函数: # f(X1,X2,X3,X4,X5)=0X1+0.1X2+0.2X3+0.3X4+0.8X5 # 约束条件: # X1+2X2 + 0X3 + X4 + 0X5>=100 # 0X1+0X2 + 2X3 + 2X4 + 1X5>=100 # 3X1+X2 + 2X3 + 0X4 + 3X5>=100 #引用lpSolve library (lpSolve) #求解 f.obj <- c (0, 0.1, 0.2, 0.3, 0.8) f.con <- matrix ( c (1, 2, 0, 1, 0, 0, 0, 2, 2, 1, 3, 1, 2, 0, 3), nrow = 3, byrow = TRUE ) f.dir <- c ( ">=", ">=", ">=" ) f.rhs <- c (100, 100, 100) lp.result <- lp ( "min" , f.obj, f.con, f.dir, f.rhs) #输出结果 lp.result #Success: the objective function is 10 #输出解 lp.result$solution #[1] 100 0 50 0 0
CMD常用命令15获取管理员权限模板
@echo off
:AQUIRE_ADMINISTRATOR_PRIVILEGE
rem 获取管理员权限
rem 首先在%windir%尝试新建文件夹,查看是否有管理员权限
rem 如果新建文件夹成功则删除文件夹,继续操作
rem 如果失败文件夹则新建vbs脚本,通过UAC窗口,获取管理员权限
rem 运行脚本后,删除vbs脚本
md "%windir%\TestAdminPrivilege" > nul
cls
if '%errorlevel%' == '0' (
rmdir "%windir%\TestAdminPrivilege" & goto gotAdmin
) else (goto UACPrompt)
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute %0, "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs")
CD /D "%~dp0"
:Init
REM 设置窗口标题,窗口颜色,并输出提示信息,通过输入来判断跳转到哪里
cls
title CMD窗口标题
color A
set CHOICE=
echo ----------------------------提示信息标题-------------------------------------
echo.
echo 提示信息内容
echo 提示信息内容
echo.
echo ----------------------------------------------------------------------------
echo 您需要以管理员身份运行,或关闭“用户帐户控制(UAC)”
echo ----------------------------------------------------------------------------
:RE_INPUT
echo.
echo 键入 i 安装,键入 r 卸载,键入 q 退出 (键入后请按回车键确认)
set /P CHOICE= ^> 选择:
if /I "%CHOICE%" == "i" goto INSTALL_DETECT
if /I "%CHOICE%" == "r" goto REMOVE
if /I "%CHOICE%" == "q" goto END
goto INPUT_UNKNOWN
:REMOVE
echo 删除提示信息
rem del /F /Q FULL_FILE_PATH
REM reg IMPORT UNINSTALL_DRIVER.REG
goto REMOVE_END
:REMOVE_END
echo 卸载完毕提示信息
goto END
:INSTALL_DETECT
REM 判断32位还是64位系统
if /I "%PROCESSOR_ARCHITECTURE%" == "AMD64" goto INSTALL64
if /I "%PROCESSOR_ARCHITECTURE%" == "x86" goto INSTALL32
goto INSTALL_UNKNOWN
:INSTALL64
echo 将为您安装64位程序
echo 安装提示信息
REM copy /Y FROM_PATH_64 TO_PATH
REM reg IMPORT INSTALL_DRIVER.REG
goto INSTALL_END
:INSTALL32
echo 将为您安装32位程序
echo 安装提示信息
REM copy /Y FROM_PATH_32 TO_PATH
REM reg IMPORT INSTALL_DRIVER.REG
goto INSTALL_END
:INSTALL_END
echo 安装成功提示信息
goto END
:INPUT_UNKNOWN
echo 键入的信息错误,请重试
goto RE_INPUT
:INSTALL_UNKNOWN
echo 未能识别您的系统信息,无法为您安装驱动,您可能需要手动安装
goto END
:END
REM 清理环境变量
echo.
set CHOICE=
pause
# 使用myuid来执行mycmd # 需要输入密码 runas /noprofile /user:myuid mycmd
# 执行命令时不按enter # 而是按ctrl+shift+enter ctrl+shift+enter
AndroidStudio打包so文件
AndroidStudio打包so文件方法如下:
1、将so文件,用下面的文件结构打包为一个zip包,并修改后缀为jar,如armeabi.jar
/lib/armeabi/*.so
2、将armeabi.jar拷贝到项目的libs文件夹下
/your_project/app/libs
3、AndroidStudio会默认将libs下的*.jar一起打包
这样就好啦
Python抓取JSON网页内容
# -*- coding: UTF-8 -*-
'''
Created on 20150206
@author: Hansen
'''
import urllib2
import sys
import io
import json
#Fetch HTML from URL
def fecth_html(index,url,keepHtml,resultFile):
req = urllib2.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0')
rsp = urllib2.urlopen(req)
content = rsp.read()
#receive_header = rsp.info()
#print(sys.getfilesystemencoding())
#content = content.decode('utf-8','replace')
if keepHtml:
fileinfo = open(str(index)+'.html','w')
fileinfo.write(content)
print("save file "+ str(index)+'.html: ok')
parse_json(content,resultFile)
#Parse HTML
def parse_json(content,resultFile):
jsonData = json.loads(content)
shops = jsonData['shopBeans']
print(len(shops))
for shop in shops:
szTitle = shop['filterFullName']
szTitle = szTitle.replace("\r\n", "-").replace(" ","");
szStar = shop['shopPowerTitle']
szMeanPrice = str(shop['avgPrice'])
szMeanPrice = szMeanPrice.replace("\n", "").replace(" ","");
szAddressA = shop['mainRegionName']
szAddressB = shop['address']
szAddress = (szAddressA+"-"+szAddressB).replace("\r\n", "-").replace(" ","");
szTaste = shop['refinedScore1']
szEvn = shop['refinedScore2']
szService = shop['refinedScore3']
fileinfo = io.open(resultFile,'a',encoding='utf_16')
fileinfo.write(szTitle+","+szStar+","+szMeanPrice+","+szAddress+"," +szTaste+","+szEvn+","+szService+"\n")
第一次拆iPhone4S
这绝对是no zuo no die的典型事迹啊。
iPhone4S美版,IOS5.1.1,卡贴解锁,已越狱。美中不足,锁屏键坏掉了。
我当然不能妥协了,于是淘宝上买了个开机排线(感光排线),一个城市三天才到。
晚上下班后,开始了拆机之旅,拆到一半发现没带镊子,于是回家搞了个镊子。
回来继续拆,iPhone 4S比iPhone4难拆一些,尤其是前置摄像头保护罩,用了一刻钟才弄下来。
全部拆掉后,换掉排线,开始组装。
感光排线有些难弄,但还好啦。
主板上好,弄右上角的wifi排线,插好了,发现排线位置不对,与是撬棒弄下来准备再插一下。
靠。。。。。。
不小心把主板上的wifi排线插座弄掉了,整个脱焊了,吐血啊。。。
怀着复杂的心情,将手机装好,发现果真wifi时断时续,基本没法用了。
心情异常沉重,距离成功只有一步之遥啊。。。
查了一下,要重新焊上才行。
虽然能借到电烙铁,但以前只弄过很简单的焊点,这个还是不要自己弄了吧。
今天,跑了一趟电脑城,遇到了一个靠谱的师傅,十几分钟就给我搞定了。
当然,师傅对我可以把这个弄掉表示无法理解,另外鄙视我“和钱过不去”。
好吧,我承认,25块能搞定的东西,我最后花了175。
吐血啊。。。
还好地方是,我自己换上的地方,全都好用哦,哈哈哈哈哈哈哈。
下次继续自己拆。
另外,回来的时候,出租车师傅教导我:
1、心态要好,别瞎着急,着急解决不了问题
2、与人沟通的时候,要注意沟通方式和预期
第一次感觉打车赚到了。。。
CSharp抓取JSON网页内容
using Newtonsoft.Json;
using DaZhongDianPing.JsonBeans;
class JsonCrawler
{
private PhaseResultBean PhaseJson(Uri uri, String szResultPath, String szErrorPath)
{
PhaseResultBean result = new PhaseResultBean();
try
{
//取回网页
WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Byte[] pageData = client.DownloadData(uri);
string pageHtml = Encoding.UTF8.GetString(pageData);
JsonBeans.TopShopsBean topShops = JsonConvert.DeserializeObject<JsonBeans.TopShopsBean>(pageHtml);
//分析Json
int len = topShops.ShopBeans.Length;
result.total = len;
foreach (ShopBean shop in topShops.ShopBeans)
{
try
{
String szTitle = shop.FilterFullName;
if (szTitle != null) szTitle = szTitle.Replace("\r\n", "-");
String szStar = shop.ShopPowerTitle;
String szMeanPrice = shop.AvgPrice.ToString();
String szRegionName = shop.MainRegionName;
String szAddress = shop.Address;
if (szAddress != null) szAddress.Replace(",", "-");
String szTaste = shop.RefinedScore1;
String szEvn = shop.RefinedScore2;
String szService = shop.RefinedScore3;
//将获取的内容写入文本
using (StreamWriter sw = new StreamWriter(szResultPath, true))
{
sw.WriteLine(szTitle + "," + szStar + "," + szMeanPrice + "," + szRegionName + "," + szAddress + "," + szTaste + "," + szEvn + "," + szService);
}
result.successed += 1;
}
catch (Exception Ex)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(Ex.Message);
}
result.failed += 1;
}
}
}
catch (WebException webEx)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(webEx.Message);
}
result.bSuccess = false;
}
return result;
}
}
class PhaseResultBean
{
public Boolean bSuccess;
public int total;
public int successed;
public int failed;
}
public enum JsonEnginType
{
JsonEngin_Newtonsoft
}
internal class ShopBean
{
[JsonProperty("addDate")]
public string AddDate { get; set; }
[JsonProperty("addUser")]
public object AddUser { get; set; }
[JsonProperty("addUserName")]
public object AddUserName { get; set; }
[JsonProperty("address")]
public string Address { get; set; }
[JsonProperty("altName")]
public string AltName { get; set; }
[JsonProperty("avgPrice")]
public int AvgPrice { get; set; }
[JsonProperty("branchName")]
public string BranchName { get; set; }
[JsonProperty("branchTotal")]
public int BranchTotal { get; set; }
[JsonProperty("businessHours")]
public string BusinessHours { get; set; }
[JsonProperty("canSendSms")]
public object CanSendSms { get; set; }
[JsonProperty("categoryId")]
public int CategoryId { get; set; }
[JsonProperty("cityId")]
public int CityId { get; set; }
[JsonProperty("crossRoad")]
public string CrossRoad { get; set; }
[JsonProperty("defaultPic")]
public string DefaultPic { get; set; }
[JsonProperty("defaultPicBig")]
public object DefaultPicBig { get; set; }
[JsonProperty("dishTagList")]
public string[][] DishTagList { get; set; }
[JsonProperty("dishTags")]
public string DishTags { get; set; }
[JsonProperty("district")]
public int District { get; set; }
[JsonProperty("districtName")]
public object DistrictName { get; set; }
[JsonProperty("filterFullAdress")]
public string FilterFullAdress { get; set; }
[JsonProperty("filterFullName")]
public string FilterFullName { get; set; }
[JsonProperty("firstReviewId")]
public int FirstReviewId { get; set; }
[JsonProperty("firstUserFace")]
public object FirstUserFace { get; set; }
[JsonProperty("firstUserNickName")]
public object FirstUserNickName { get; set; }
[JsonProperty("fullAdress")]
public string FullAdress { get; set; }
[JsonProperty("fullName")]
public string FullName { get; set; }
[JsonProperty("glat")]
public object Glat { get; set; }
[JsonProperty("glng")]
public object Glng { get; set; }
[JsonProperty("groupFlag")]
public object GroupFlag { get; set; }
[JsonProperty("hasStaticMap")]
public object HasStaticMap { get; set; }
[JsonProperty("hits")]
public int Hits { get; set; }
[JsonProperty("isUserCanUpdate")]
public object IsUserCanUpdate { get; set; }
[JsonProperty("lastDate")]
public string LastDate { get; set; }
[JsonProperty("lastIp")]
public object LastIp { get; set; }
[JsonProperty("lastUser")]
public object LastUser { get; set; }
[JsonProperty("lastUserName")]
public object LastUserName { get; set; }
[JsonProperty("mainCategoryId")]
public int MainCategoryId { get; set; }
[JsonProperty("mainCategoryName")]
public object MainCategoryName { get; set; }
[JsonProperty("mainRegionId")]
public int MainRegionId { get; set; }
[JsonProperty("mainRegionName")]
public string MainRegionName { get; set; }
[JsonProperty("minUserMana")]
public object MinUserMana { get; set; }
[JsonProperty("monthlyHits")]
public int MonthlyHits { get; set; }
[JsonProperty("nearByTags")]
public object NearByTags { get; set; }
[JsonProperty("nearbyShops")]
public object NearbyShops { get; set; }
[JsonProperty("oldChainId")]
public object OldChainId { get; set; }
[JsonProperty("phoneNo")]
public string PhoneNo { get; set; }
[JsonProperty("phoneNo2")]
public string PhoneNo2 { get; set; }
[JsonProperty("picTotal")]
public int PicTotal { get; set; }
[JsonProperty("popularity")]
public int Popularity { get; set; }
[JsonProperty("power")]
public int Power { get; set; }
[JsonProperty("prevWeeklyHits")]
public object PrevWeeklyHits { get; set; }
[JsonProperty("priceInfo")]
public object PriceInfo { get; set; }
[JsonProperty("priceLevel")]
public int PriceLevel { get; set; }
[JsonProperty("primaryTag")]
public string PrimaryTag { get; set; }
[JsonProperty("promoId")]
public int PromoId { get; set; }
[JsonProperty("publicTransit")]
public string PublicTransit { get; set; }
[JsonProperty("refinedScore1")]
public string RefinedScore1 { get; set; }
[JsonProperty("refinedScore2")]
public string RefinedScore2 { get; set; }
[JsonProperty("refinedScore3")]
public string RefinedScore3 { get; set; }
[JsonProperty("regionId")]
public int RegionId { get; set; }
[JsonProperty("score")]
public int Score { get; set; }
[JsonProperty("score1")]
public int Score1 { get; set; }
[JsonProperty("score2")]
public int Score2 { get; set; }
[JsonProperty("score3")]
public int Score3 { get; set; }
[JsonProperty("score4")]
public int Score4 { get; set; }
[JsonProperty("searchKeyWord")]
public object SearchKeyWord { get; set; }
[JsonProperty("searchName")]
public object SearchName { get; set; }
[JsonProperty("shopGroupId")]
public int ShopGroupId { get; set; }
[JsonProperty("shopId")]
public int ShopId { get; set; }
[JsonProperty("shopName")]
public string ShopName { get; set; }
[JsonProperty("shopPower")]
public int ShopPower { get; set; }
[JsonProperty("shopPowerTitle")]
public string ShopPowerTitle { get; set; }
[JsonProperty("shopTagList")]
public string[][] ShopTagList { get; set; }
[JsonProperty("shopTags")]
public string ShopTags { get; set; }
[JsonProperty("shopTotalName")]
public string ShopTotalName { get; set; }
[JsonProperty("shopType")]
public int ShopType { get; set; }
[JsonProperty("similarShops")]
public object SimilarShops { get; set; }
[JsonProperty("suggestGA")]
public object SuggestGA { get; set; }
[JsonProperty("suggestReason")]
public object SuggestReason { get; set; }
[JsonProperty("todayHits")]
public object TodayHits { get; set; }
[JsonProperty("voteTotal")]
public int VoteTotal { get; set; }
[JsonProperty("webSite")]
public object WebSite { get; set; }
[JsonProperty("weeklyHits")]
public int WeeklyHits { get; set; }
[JsonProperty("wishTotal")]
public object WishTotal { get; set; }
[JsonProperty("writeUp")]
public string WriteUp { get; set; }
}
internal class TopShopsBean
{
[JsonProperty("categoryId")]
public int CategoryId { get; set; }
[JsonProperty("cityId")]
public int CityId { get; set; }
[JsonProperty("maxResults")]
public int MaxResults { get; set; }
[JsonProperty("rankType")]
public int RankType { get; set; }
[JsonProperty("shopBeans")]
public ShopBean[] ShopBeans { get; set; }
[JsonProperty("shopType")]
public int ShopType { get; set; }
[JsonProperty("skipResults")]
public int SkipResults { get; set; }
}
CSharp抓取HTML网页内容
using mshtml;
using HtmlAgilityPack;
class HTMLCrawler
{
private PhaseResultBean PhaseHtml(int index, Uri uri, String szResultPath, String szErrorPath, HTMLEnginType htmlEngin)
{
PhaseResultBean result = new PhaseResultBean();
try
{
WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Byte[] pageData = client.DownloadData(uri);
string pageHtml = Encoding.UTF8.GetString(pageData);
if (checkSavePages.Checked)
{
String szHtmlPath = XWin32.getExeParentPath() + index.ToString()+".html";
using (StreamWriter sw = new StreamWriter(szHtmlPath, true))
{
sw.WriteLine(pageHtml);
}
}
switch(htmlEngin)
{
case HTMLEnginType.HTMLEngin_mshtml:
PhaseHtml_mshtml(pageHtml, szResultPath, szErrorPath, result);
break;
case HTMLEnginType.HTMLEngin_HtmlAgilityPack:
PhaseHtml_HtmlAgilityPack(pageHtml, szResultPath, szErrorPath, result);
break;
}
}
catch (WebException webEx)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(webEx.Message);
}
result.bSuccess = false;
}
return result;
}
private void PhaseHtml_mshtml(String pageHtml, String szResultPath, String szErrorPath, PhaseResultBean result)
{
mshtml.HTMLDocument docObject = new mshtml.HTMLDocument();
mshtml.IHTMLDocument2 doc2 = docObject as mshtml.IHTMLDocument2;
doc2.write(pageHtml);
doc2.close();
mshtml.IHTMLDocument3 doc3 = docObject as mshtml.IHTMLDocument3;
int len = doc3.getElementById("shop-all-list").children[0].children.length;
result.total += len;
foreach (IHTMLElement li in doc3.getElementById("shop-all-list").children[0].children)
{
try
{
IHTMLElement title = li.children[1].children[0];
String szTitle = title.innerText;
if (szTitle != null) szTitle = szTitle.Replace("\r\n", "-");
IHTMLElement star = li.children[1].children[1].children[0];
String szStar = star.getAttribute("title");
IHTMLElement reviewNum = li.children[1].children[1].children[1];
String szReviewNum = reviewNum.innerText;
IHTMLElement meanPrice = li.children[1].children[1].children[3];
String szMeanPrice = meanPrice.innerText;
IHTMLElement category = li.children[1].children[2].children[0];
String szCategory = category.innerText;
IHTMLElement address = li.children[1].children[2].children[3];
String szAddress = address.innerText;
if (szAddress != null) szAddress.Replace(",", "-");
IHTMLElement taste = li.children[1].children[3].children[0];
String szTaste = taste.innerText;
IHTMLElement evn = li.children[1].children[3].children[1];
String szEvn = evn.innerText;
IHTMLElement service = li.children[1].children[3].children[2];
String szService = service.innerText;
//将获取的内容写入文本
using (StreamWriter sw = new StreamWriter(szResultPath, true))
{
sw.WriteLine(szTitle + "," + szStar + "," + szReviewNum + "," + szMeanPrice + "," + szCategory + "," + szAddress + "," + szTaste + "," + szEvn + "," + szService);
}
}
catch (Exception Ex)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(Ex.Message);
}
result.failed += 1;
}
}
}
private void PhaseHtml_HtmlAgilityPack(String pageHtml, String szResultPath, String szErrorPath, PhaseResultBean result)
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(pageHtml);
HtmlAgilityPack.HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("/html[1]/body[1]/div[4]/div[3]/div[1]/div[1]/div[2]/ul[1]/li");
result.total += nodes.Count;
foreach (HtmlAgilityPack.HtmlNode li in nodes)
{
try
{
HtmlAgilityPack.HtmlNode titleA = li.SelectNodes("div[2]/div[1]/a[1]")[0];
HtmlAgilityPack.HtmlNode titleB = li.SelectNodes("div[2]/div[1]/a[2]") == null ? null : li.SelectNodes("div[2]/div[1]/a[2]")[0];
String szTitle = (titleA==null?"":titleA.InnerText) + "-" + (titleB == null ? "" : titleB.InnerText);
if (szTitle != null) szTitle = szTitle.Replace("\n", "");
if (szTitle != null) szTitle = szTitle.Replace(" ", "");
HtmlAgilityPack.HtmlNode star = li.SelectNodes("div[2]/div[2]/span[1]")[0];
String szStar = star.Attributes["title"].Value.ToString();
HtmlAgilityPack.HtmlNode reviewNum = li.SelectNodes("div[2]/div[2]/a[1]")[0];
String szReviewNum = reviewNum.InnerText;
if (szReviewNum != null) szReviewNum = szReviewNum.Replace("\n", "");
if (szReviewNum != null) szReviewNum = szReviewNum.Replace(" ", "");
HtmlAgilityPack.HtmlNode meanPrice = li.SelectNodes("div[2]/div[2]/a[2]")[0];
String szMeanPrice = meanPrice.InnerText;
if (szMeanPrice != null) szMeanPrice = szMeanPrice.Replace("\n", "");
if (szMeanPrice != null) szMeanPrice = szMeanPrice.Replace(" ", "");
HtmlAgilityPack.HtmlNode category = li.SelectNodes("div[2]/div[3]/a[1]")[0];
String szCategory = category.InnerText;
HtmlAgilityPack.HtmlNode addressA = li.SelectNodes("div[2]/div[3]/a[2]")[0];
HtmlAgilityPack.HtmlNode addressB = li.SelectNodes("div[2]/div[3]/span[1]")[0];
String szAddress = addressA.InnerText + "-" + addressB.InnerText;
if (szAddress != null) szAddress.Replace(",", "-");
HtmlAgilityPack.HtmlNode taste = li.SelectNodes("div[2]/span[1]/span[1]")[0];
String szTaste = taste.InnerText;
HtmlAgilityPack.HtmlNode evn = li.SelectNodes("div[2]/span[1]/span[2]")[0];
String szEvn = evn.InnerText;
HtmlAgilityPack.HtmlNode service = li.SelectNodes("div[2]/span[1]/span[3]")[0];
String szService = service.InnerText;
//将获取的内容写入文本
using (StreamWriter sw = new StreamWriter(szResultPath, true))
{
sw.WriteLine(szTitle + "," + szStar + "," + szReviewNum + "," + szMeanPrice + "," + szCategory + "," + szAddress + "," + szTaste + "," + szEvn + "," + szService);
}
}
catch (Exception Ex)
{
using (StreamWriter sw = new StreamWriter(szErrorPath, true))
{
sw.WriteLine(Ex.Message);
}
result.failed += 1;
}
}
}
}
class PhaseResultBean
{
public Boolean bSuccess;
public int total;
public int successed;
public int failed;
}
public enum HTMLEnginType
{
HTMLEngin_mshtml,
HTMLEngin_HtmlAgilityPack
}
Python抓取网页内容
1、BeautifulSoup解析网页
'''
Created on 20150203
@author: Hansen
'''
import urllib2
import sys
import io
from bs4 import BeautifulSoup
#Fetch HTML from URL
def fecth_html(index,url,keepHtml,resultFile):
req = urllib2.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0')
rsp = urllib2.urlopen(req)
content = rsp.read()
#receive_header = rsp.info()
#print(sys.getfilesystemencoding())
#content = content.decode('utf-8','replace')
if keepHtml:
fileinfo = open(str(index)+'.html','w')
fileinfo.write(content)
print("save file "+ str(index)+'.html: ok')
parse_html(content,resultFile)
#Parse HTML
def parse_html(html,resultFile):
soup = BeautifulSoup(html,fromEncoding="utf8")
lis = soup.select('div.shop-all-list li')
print(len(lis))
for li in lis:
szTitle = (li.select('div:nth-of-type(2) div:nth-of-type(1) a h4'))[0].get_text()
szTitle = szTitle.replace("\r\n", "-").replace(" ","");
szStar = (li.select('div:nth-of-type(2) div:nth-of-type(3) span'))[0]['title']
szReviewNum = (li.select('div:nth-of-type(2) div:nth-of-type(3) a:nth-of-type(1)'))[0].get_text()
szReviewNum = szReviewNum.replace("\n", "").replace(" ","");
szMeanPrice = (li.select('div:nth-of-type(2) div:nth-of-type(3) a:nth-of-type(2)'))[0].get_text()
szMeanPrice = szMeanPrice.replace("\n", "").replace(" ","");
szCategory = (li.select('div:nth-of-type(2) div:nth-of-type(4) a:nth-of-type(1)'))[0].get_text()
szAddressA = (li.select('div:nth-of-type(2) div:nth-of-type(4) a:nth-of-type(2)'))[0].get_text()
szAddressB = (li.select('div:nth-of-type(2) div:nth-of-type(4) span:nth-of-type(3)'))[0].get_text()
szAddress = (szAddressA+"-"+szAddressB).replace("\r\n", "-").replace(" ","");
szTaste = (li.select('div:nth-of-type(2) span:nth-of-type(5) span:nth-of-type(1)'))[0].get_text()
szEvn = (li.select('div:nth-of-type(2) span:nth-of-type(5) span:nth-of-type(2)'))[0].get_text()
szService = (li.select('div:nth-of-type(2) span:nth-of-type(5) span:nth-of-type(3)'))[0].get_text()
fileinfo = io.open(resultFile,'a',encoding='utf_16')
fileinfo.write(szTitle+","+szStar+","+szReviewNum+","+szMeanPrice+","+szCategory+"," +szAddress+","+szTaste+","+szEvn+","+szService+"\n")
2、PyQuery解析网页
'''
Created on 20150203
@author: Hansen
'''
import urllib2
import sys
import io
from pyquery import PyQuery
#Fetch HTML from URL
def fecth_html(index,url,keepHtml,resultFile):
req = urllib2.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.2; rv:16.0) Gecko/20100101 Firefox/16.0')
rsp = urllib2.urlopen(req)
content = rsp.read()
#receive_header = rsp.info()
#print(sys.getfilesystemencoding())
#content = content.decode('utf-8','replace')
if keepHtml:
fileinfo = open(str(index)+'.html','w')
fileinfo.write(content)
print("save file "+ str(index)+'.html: ok')
parse_html(content,resultFile)
#Parse HTML
def parse_html(html,resultFile):
doc = PyQuery(html)
lis = doc('div.shop-all-list li')
print(len(lis))
for li in lis:
li_doc = PyQuery(li)
szTitle = li_doc('li div div a h4').text()
szTitle = szTitle.replace("\r\n", "-").replace(" ","");
szStar = li_doc("li div div span").filter('.sml-rank-stars').attr('title')
szReviewNum = li_doc('li div div a').filter('.review-num').text()
szReviewNum = szReviewNum.replace("\n", "").replace(" ","");
szMeanPrice = li_doc('li div div a').filter('.mean-price').text()
szMeanPrice = szMeanPrice.replace("\n", "").replace(" ","");
szCategory = li_doc('li div div a span').filter('.tag').eq(1).text()
szAddressA = li_doc('li div div a span').filter('.tag').eq(1).text()
szAddressB = li_doc('li div div span').filter('.addr').eq(0).text()
szAddress = (szAddressA+"-"+szAddressB).replace("\r\n", "-").replace(" ","");
szTaste = li_doc('li div span span').eq(0).text()
szEvn = li_doc('li div span span').eq(1).text()
szService = li_doc('li div span span').eq(2).text()
fileinfo = io.open(resultFile,'a',encoding='utf_16')
fileinfo.write(szTitle+","+szStar+","+szReviewNum+","+szMeanPrice+","+szCategory+"," +szAddress+","+szTaste+","+szEvn+","+szService+"\n")
从WIN ADT复制到MAC ADT
Android SDK超级大(我现在有26.5G),而连接Google的速度超级慢,一次下载要好久。
最近准备在MAC进行Android开发,别的都好下载,但Adroid SDK就有些太大了,于是考虑从WIN下直接复制到MAC。
Android SDK主要由下面几部分组成:
/add-ons:GoogleAPI,操作系统无关 /build-tools:构建工具,这个和操作系统相关的,要重新下载 /docs:文档,操作系统无关 /extras:扩展内容,是否需要重新下载与其功能有关 /extras/android:操作系统无关 /extras/google:操作系统无关 /extras/intel:intel的硬件加速驱动,操作系统相关,需重新下载 /platforms:android平台,早期操作系统相关,后期将操作系统相关内容放到了build-tools中,可以全部拷贝过去,系统相关内容会自动重新下载 /platform-tools:管理工具,这个和操作系统相关的,要重新下载 /samples:demo,操作系统无关 /sources:android源码,操作系统无关 /system-images:android系统映像,操作系统无关 /temp:下载缓存,不需要拷贝 /tools:管理工具,这个和操作系统相关的,要重新下载