58.com qiyi
using AnfleCrawler.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AnfleCrawler.DataAnalyzer
{
internal class Qy58 : AnalyzerBase
{
public override void Init(PageCrawler crawler)
{
base.Init(crawler); var url = new Uri("http://qy.58.com/caohejing/pn1/?PGTID=14177711280840.45006677554920316&ClickID=1");
//http://qy.58.com/19583455460359/?PGTID=14177659184690.5166369006238447&ClickID=4
crawler.PushUrl(url, );
} protected override void AnalyzeInternal(PageLandEntity current)
{
var lander = Crawler.Lander;
var pHandler = CreateContentHandler(current);
switch (current.Depth)
{
case :
{
pHandler.AjaxBlocks.Add(HACK);
var dom = lander.GetDocument(pHandler);
DoPerPaging(current, dom.DocumentNode, ".next"); foreach (var node in QueryNodes(dom.DocumentNode, ".compList a"))
{
var url = GetHref(node, current.Url);
Crawler.PushUrl(url, );
}
}
break;
case :
{
var dom = lander.GetDocument(pHandler);
var attr = new AttributeFiller(); attr.Append("Name:{0}", QueryTexts(dom.DocumentNode, ".compT").First()); foreach (var th in QueryNodes(dom.DocumentNode, ".basicMsg table th").Skip())
{
string sTh = th.InnerText, sTd;
switch (sTh)
{
case "联系电话":
case "邮箱":
var client = new System.Net.WebClient();
var iNode = QueryNode(th.NextSibling, "img");
byte[] imgRaw = client.DownloadData(GetHref(iNode, current.Url, attrName: "src"));
var img = new System.Drawing.Bitmap(new System.IO.MemoryStream(imgRaw));
sTd = OCR(img);
break;
case "公司地址":
sTd = QueryTexts(th.NextSibling, "span").First();
break;
default:
sTd = th.NextSibling.InnerText.HtmlTrim();
break;
}
attr.Append("{0}:{1}", sTh, sTd);
} var bo = new CompanyEntity();
bo.City = "上海";
bo.GroupName = "漕河泾企业";
bo.PageUrl = current.Url.OriginalString;
bo.UpdateDate = DateTime.Now;
attr.FillEntity(bo, new Dictionary<string, string>()
{
{"公司性质", "Nature"},
{"公司行业", "Industry"},
{"公司规模", "Scale"},
{"联系人", "ContactPerson"},
{"企业网址", "Website"}, {"联系电话", "Tel"},
{"邮箱", "Email"},
{"公司地址", "Address"},
});
Repository.SaveCompany(bo);
Crawler.OutWrite("保存企业 {0}", bo.Name);
}
break;
}
}
}
}
58.com qiyi的更多相关文章
- NXP恩智浦P87C51/52/54/58/591芯片解密单片机破解多少钱?
NXP恩智浦P87C51/52/54/58/591芯片解密单片机破解 芯片解密型号: P87C51x2.P87C52x2.P87C54x2.P87C58x2.P87C591 单片机解密 #####[ ...
- android模仿58筛选下拉框(PopupWindow实现)
前言:前几天用58同城APP找房子的时候,看到筛选下拉框蛮不错的,然后也有很多朋友需要实现这个功能,于是从网上下载了一个demo,在他的基础上进行修改,花了几个小时对他的代码进行修改,重构,封装.把一 ...
- Ubuntu 14.04 编译安装 boost 1.58
简介 Boost is a set of libraries for the C++ programming language that provide support for tasks and s ...
- [MISSAJJ原创] UITableViewCell移动及翻转出现的3D动画效果[58同城cell移动效果]
2015-11-20 很喜欢在安静的状态, 听着音乐,敲着键盘, 和代码们浓情对话, 每一份代码的积累, 都让自己觉得很充实快乐!Y(^_^)Y. 看到58同城app的cell有动画移动出现的特效,很 ...
- 用Python写爬虫爬取58同城二手交易数据
爬了14W数据,存入Mongodb,用Charts库展示统计结果,这里展示一个示意 模块1 获取分类url列表 from bs4 import BeautifulSoup import request ...
- 58同城高性能移动Push推送平台架构演进之路
本文详细讲述58同城高性能移动Push推送平台架构演进的三个阶段,并介绍了什么是移动Push推送,为什么需要,原理和方案对比:移动Push推送第一阶段(单平台)架构如何设计:移动Push推送典型性能问 ...
- 使用JavaScript在项目前台开发的58种常用小技巧
oncontextmenu="return false" :禁止右键 onselectstart="return false" : 禁止选取 onpaste = ...
- ubuntu14.04 boost动态库找不到 libboost_system.so.1.58.0
error while loading shared libraries: : cannot open shared object file: No such file or directory == ...
- 重新想象 Windows 8 Store Apps (58) - 微软账号
[源码下载] 重新想象 Windows 8 Store Apps (58) - 微软账号 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 微软账号 获取微软账号的用户 ...
随机推荐
- Ajax中dataType数据类型
今天项目中使用Ajax向后台保存数据,其中dataType为'json';当请求成功后,没有走success回调,反而走了error:数据库已经成功保存数据了. 后来搞半天才知道原来dataType指 ...
- Unity AngryBots愤怒的机器人demo研究
做为Unity早期的经典demo,一直从3.5以后沿用到4.7.x版本.但其内部一些做法十分不合理.比如使用过多的根目录, 创建怪物和玩家不用SpawnPoint.AI.CheckPoint的代码实现 ...
- sql server中如何查看执行效率不高的语句
sql server中,如果想知道有哪些语句是执行效率不高的,应该如何查看呢?下面就将为您介绍sql server中如何查看执行效率不高的语句,供您参考. 在测量功能时,先以下命令清除sql se ...
- HDU1848 Fibonacci again and again SG函数
Fibonacci again and again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...
- tomcat证书配置(来源于http://my.oschina.net/zhxm/blog/161159)
第一步:为服务器生成证书 1.进入%JAVA_HOME%/bin目录 2.使用keytool为Tomcat生成证书,假定目标机器的域名是“localhost”,keystore文件存放在“D:\tom ...
- mysql多表查询例子
[理解方式]先分别找出每个表中查询出来的结果,然后再将两个结果合并. create database test charset utf8 collate utf8_bin;use test;creat ...
- javascript guid(uuid)
http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript function generateU ...
- 【转】linux命令详解:md5sum命令
[转]linux命令详解:md5sum命令 转自:http://blog.itpub.net/29320885/viewspace-1710218/ 前言 在网络传输.设备之间转存.复制大文件等时,可 ...
- IAR更改代码字体&快速模板设置。——Arvin
1.是用软件提供的字体 如果只想简单的设置,可进行如下设置Tools->IDE Options->Editor->Colors and Fonts->Editor Font-& ...
- 再谈 Unlix (Linux, AIX, HPUX) 上 Java 的 java.lang.OutOfMemoryError: unable to create new native thread
首先很容易排除是 程序问题 内存用了很少,64 位 Java也没有内存限制,线程也不多,-Xss 堆栈也没人会配置很大. 那么肯定是 limit 不足引起 配置 ulimit 就可以了,问题看起来很简 ...