Commit Graph
6 Commits
Author SHA1 Message Date
Elendil 1c018a39a4 Bug Fix and Add HttpPost,cookies Support 2018-05-11 01:12:33 +08:00
Elendil 2d9542a252 Add advanced CssSelector
we can now use  ::attr(href) syntax to get values from html attribute
example:
SourceHTML:
<div class="job-info">
<h3 title="招聘销售总监">
	<a href="https://www.liepin.com/job/1913549323.shtml" data-promid="imscid=R000000075&amp;ckid=b6ab9f62c5abd657&amp;headckid=b6ab9f62c5abd657&amp;pageNo=0&amp;pageIdx0&amp;totalIdx=0&amp;sup=1&amp;d_pageSize=40&amp;siTag=aEPqOr56EDcL1HyFlajr3w%7EfA9rXquZc5IkJpXC-Ycixw&amp;d_headId=549281be67f4c28a83bd3d340965b270&amp;d_ckId=549281be67f4c28a83bd3d340965b270&amp;d_sfrom=search_fp&amp;d_curPage=0&amp;d_posi=0" target="_blank" onclick="tlog=window.tlog||[];tlog.push('c:w_sojob_jobclick_9')">
销售总监 </a>
</h3>
</div>

Selector:
Response.CssSelector(".job-info h3 a::attr(href)").Extract();
The above will get a IEnumerable<String> that only contains the href of the link in above SourceHTML
Response.CssSelector(".job-info h3 a::attr(href)").ExtractFirst();
The above code will get the first element as string from the CssSelector, here the value is
https://www.liepin.com/job/1913549323.shtml

::attr(text) will get the InnerText of the element
2018-04-20 01:23:44 +08:00
Elendil d25499879c Intergarated with HtmlAgilityPack.CssSelectors
Wrap the Css selected node into a IResponse again so that we can process in chain
NScrapy can now get url from response through regex and HtmlAgilityPack.CssSelectors
By getting the url, we can again send request and write call back function to get more data
2018-04-19 01:58:58 +08:00
Elendil 05368bee59 Optimized the Structure of the Entire Project
Involve HtmlAgilityPack and HtmlAgilityPack.CssSelector.NetCore in Infra
To help Getting element through CSS Selector
2018-04-18 22:12:37 +08:00
Elendil adc1044009 Add DownloaderMiddleware process logic and added a default DownloaderMiddleware
HttpHeaderMiddleware as a Default DownloaderMiddleware will set HttpRequest Header
based on the config in appsetting.json (AppSettings:HttpHeader section)
If specified node is not set in config file, Middleware will use its default value to fullfill the request header
2018-04-13 01:12:15 +08:00
Elendil 18c4dca3ab Created base structure of NScrapy Shell, Engine, Scheduler, Downloader
Engine:
1.Configurable in appsetting.json to choice a real engine or a mock engine for test
2.Listen to Item queue to handle the request sent by Scheduler
Shell:
1.Init Context for NScrapy to run
	1).Read Config
2.Get Spider through Spider Factory
Scheduler:
1.Send request to Queue which the engine is listening
Downloader
1.Init DownloaderPool
2.Asyncly Process all the incoming request by picking a Downloader from DownloaderPool
*Test Case update
EngineTest:Test if the message can be sent to MockEngine through Shell->Spider->Scheduler->Engine
ConstructDownloader:Test if DownloaderPool can work, if the Downloader can actually get response from Website
2018-04-12 00:27:39 +08:00