博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
58.com qiyi
阅读量:7235 次
发布时间:2019-06-29

本文共 3890 字,大约阅读时间需要 12 分钟。

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, 0);        }        protected override void AnalyzeInternal(PageLandEntity current)        {            var lander = Crawler.Lander;            var pHandler = CreateContentHandler(current);            switch (current.Depth)            {                case 0:                    {                        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, 1);                        }                    }                    break;                case 1:                    {                        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(1))                        {                            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
() { {
"公司性质", "Nature"}, {
"公司行业", "Industry"}, {
"公司规模", "Scale"}, {
"联系人", "ContactPerson"}, {
"企业网址", "Website"}, {
"联系电话", "Tel"}, {
"邮箱", "Email"}, {
"公司地址", "Address"}, }); Repository.SaveCompany(bo); Crawler.OutWrite("保存企业 {0}", bo.Name); } break; } } }}

 

转载于:https://www.cnblogs.com/Googler/p/4211492.html

你可能感兴趣的文章
ubuntu设置分辨率
查看>>
Apache Kylin v3.0.0-alpha 正式发布
查看>>
区块链开发公司 区块链能否走上主义救援之路?
查看>>
机器会取代人类吗?
查看>>
实现Java热部署的几种解决方案
查看>>
Linux基础命令---mkswap
查看>>
LAMOST双星研究方面获进展
查看>>
数据结构探险之线性表篇(上):顺序表
查看>>
第三回 山有木兮木有枝,心说君兮君不知
查看>>
这么说吧,dubbo很简单,其实就是一个远程服务调用的框架
查看>>
Flume 日志收集系统 Spooldir-Source HDFS-sink
查看>>
题解 P1339 【[USACO09OCT]热浪Heat Wave】
查看>>
Flask從入門到入土(一)——程序的基本結構
查看>>
Windows 10不能正常打开开始菜单问题修复
查看>>
JFinal-layui v1.1 更新,极速开发企业应用系统
查看>>
部署WAR包实时查看Tomcat的状态和日志
查看>>
vex使用...mapActions报错解决办法
查看>>
胡捷:区块链是促进个体信任的“天使”,也是消减中心权利的“魔鬼”
查看>>
使用docker-compose快速搭建zookeeper集群
查看>>
TFC暨智能娱乐展乐相科技陈朝阳致开发者:为什么你要信任虚拟现实
查看>>