2020-03-29

CSS-Study-notes0


1. google搜索关键字
 1.1 w3schools.com
 1.2 developer.mozilla.org
 1.3 w3.org
 1.4 更多
 1.5 搜索截图
2. 某度搜索同样关键字截图
3. 小结

1. google搜索关键字

nth-child(even) nth-child(odd)

1.1 w3schools.com

https://www.w3schools.com/cssref/sel_nth-child.asp
奇数和偶数是关键字,可用于匹配索引为奇数或偶数(第一个孩子的索引为1)的子元素。
tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}

使用公式(an + b)。说明:a表示周期大小,n是计数器(从0开始),b是偏移值。
p:nth-child(3n+0) { background: red;}

1.2 developer.mozilla.org

https://developer.mozilla.org/zh-CN/docs/Web/CSS/:nth-child
tr:nth-child(2n+1) 表示HTML表格中的奇数行。
tr:nth-child(odd) 表示HTML表格中的奇数行。
tr:nth-child(2n) 表示HTML表格中的偶数行。
tr:nth-child(even) 表示HTML表格中的偶数行。

1.3 w3.org

https://www.w3.org/Style/Examples/007/evenodd.en.html
(COL可以用于样式以外的其他用途,但是在这种情况下,我们需要的是存在COL元素。)以下规则将第一列的背景设为黄色,然后将第二列从第三列开始的背景设为灰色。 :
<table>
<col><col><col><col><col><col><col><col><col><col>
<tr><th>Month<th>'94<th>'95<th>'96...

col:first-child {background: #FF0}
col:nth-child(2n+3) {background: #CCC}

1.4 更多

https://www.w3school.com.cn/cssref/selector_nth-child.asp
https://api.jquery.com/nth-child-selector/
https://www.runoob.com/
...

1.5 搜索截图


2. 某度搜索同样关键字截图

3. 小结

某度搜索的结果第一页都是各种blog的文章,这些文章都是个人学习记录的点滴,不系统,当然能找到你要的答案,但仅此而已。
G搜索的结果是系统教学的相关页面,打开就可以看到该知识点在所属技术中的位置,可以方便的扩展学习。
想要学习使用某度搜索时常会带你绕弯...

2020-03-28

CSS-Selector



1. CSS
 1.1 CSS信息可以来自
 1.2 采纳样式效果的优先级顺序为
2. Selectors
 2.1 Selectors 适用于情况
 2.2 Selectors 类型
3. Selectors List
4. See also
 4.1 浏览器引擎支持对比
 4.2 RWD响应式网页设计
 4.3 CSS框架列表及对比
 4.4 Bootstrap(前端框架)
 4.5 JQuery

1. CSS

https://developer.mozilla.org/en-US/docs/Web/CSS
https://developer.mozilla.org/zh-CN/docs/Web/CSS
https://zh.wikipedia.org/wiki/层叠样式表 
CSS 是开放网络的核心语言之一,由 W3C 规范 实现跨浏览器的标准化。CSS节省了大量的工作。 样式可以通过定义保存在外部.css文件中,同时控制多个网页的布局,这意味着开发者不必经历在所有网页上编辑布局的麻烦。 
CSS 被分为不同等级:CSS1 现已废弃, CSS2.1 是推荐标准, CSS3 分成多个小模块且正在标准化中。 
CSS 档内也可以包含注释,注释放在/*和*/之间。一般的浏览器也识别以双斜杠(//)开头的这种注释,但是这是不规范的做法。
W3C的CSS校验服务: http://jigsaw.w3.org/css-validator/

1.1 CSS信息可以来自

  • 作者样式
    • 独立的CSS文件(外部样式表),其优先级最低
    • 包含在HTML文件内(内部样式表)
    • 作指令内结合CSS指令(内联样式),其优先级最高。一般这样做是为了在特殊情况下,把上面来源的CSS抵消掉
  • 客户端自定义样式(client-side style sheet)
    • 浏览网页的用户可以自己在本地计算机上自己写1个CSS文件,然后就可以在浏览器内通过设置好特定选项,来加载自己的CSS文件。这个CSS文件可以用在所有的HTML文件上。当网页作者没有设定某项规则,但存在对应的用户自定义规则时,用户的规则就会起作用。假如作者的CSS文件与读者的相冲突,浏览器会采用作者的规则。如果读者有特殊要求,可以通过在自定义规则末尾添加!important提升自定义规则的显示优先权。(网页作者也可以使用!important给规则提升权限,但是优先级别比不过由用户写的!important声明,!important对于网页作者的意义仅在于网页开发阶段的规则冲突测试)
  • 浏览器样式
    • 假如外部没有特别指定一个样式的话,一般浏览器自己有一个内在的样式。由于不同浏览器的默认样式并不一致,所以讲究美观的网页的设计者一般喜欢去掉这个默认的样式。

1.2 采纳样式效果的优先级顺序为

  1. 行内样式
  2. 内部样式
  3. 在HTML中通过<link>标签直接引入的外部样式表
  4. 在CSS中通过@import语句间接引入的外部样式表
  5. 浏览网页的用户自己定义的样式表(需要手动加载,主要适用于色盲或色弱的上网用户)
  6. 浏览器默认的样式(如标题有默认大小、段落之间有默认间距等,不同浏览器的默认样式不完全一样)
CSS中还有用!important修饰的重要性声明。如果计入重要性声明,那么在以上规则的最前面还需要加上2条规则:
  1. 用户从本地加载的重要自定义样式
  2. 网页设计者设定的重要样式

2. Selectors

https://en.wikipedia.org/wiki/Cascading_Style_Sheets#Selector
https://zh.wikipedia.org/wiki/层叠样式表#選擇器

2.1 Selectors 适用于情况

  • 特定类型的所有元素,例如第二级标头<h2>
  • 由attribute指定的元素,尤其是:
    • #id:文档中唯一的标识符
    • .class:可以注释文档中多个元素的标识符
  • 元素取决于它们相对于文档树中其他元素的放置方式。
class 和 id 区分大小写,以字母开头,并且可以包括字母数字字符,连字符和下划线。class 可以应用于任何元素的任意数量的实例。id 只能应用于单个元素。

2.2 Selectors 类型

CSS里现在共有5种基本选择器(Basic Selectors)和2种伪选择器。不同选择器的优先级别和运作性能往往存在差异。 基本选择器
  • id选择器 (id)           #elementname
  • class选择器 (class)  .elementname
  • 标签选择器 (h1, p) elementname
  • 万用选择器             * ns|* *|*
  • 属性选择器             [attribute]
 * 属性选择器(也翻译为“通配符选择器”) 属性选择器允许用户自定义属性名称,而不仅仅限于id,class属性。属性选择器共有7种。
代码说明
[attribute]元素有attribute的属性。
[attribute="value"]属性attribute里是value
[attribute~="value"]属性attribute里使用空白分开的字符串里其中一个是value
[attribute|="value"]属性attribute里是value或者以value-开头的字符串
[attribute^="value"]属性attribute里最前的是value
[attribute$="value"]属性attribute里最后的是value
[attribute*="value"]属性attribute里有value出现过至少一次
CSS里现在共有4种组合选择符(Combinators):
符号说明
A > B子代选择器,选择A下一层的元素B
A ~ B兄弟选择器,选择与A同层的元素B
A + B相邻兄弟选择器,选择与A相邻的元素B(不能被任何元素相隔)
A B后代选择器,包含选择符

3. Selectors List

SelectorExample描述https://www.w3schools.com/cssref/css_selectors.aspCSSvwikiw3sjquery
::afterp::after在每个<p>元素的内容之后插入一些内容Insert something after the content of each <p> element2w20s21
::beforep::before在每个<p>元素的内容之前插入内容Insert something before the content of each <p> element2w19s22
::first-letterp::first-letter选择每个<p>元素的首字母Selects the first letter of every <p> element1w05s29
::first-linep::first-line选择每个<p>元素的第一行Selects the first line of every <p> element1w04s30
::placeholderinput::placeholder选择指定了"占位符"属性的输入元素Selects input elements with the "placeholder" attribute specifieds50
::selection::selection选择用户选择的元素部分Selects the portion of an element that is selected by a users55
:activea:active选择活动链接Selects the active link1w03s20
:animated选择器运行时,选择动画进行中的所有元素。Select all elements that are in the progress of an animation at the time the selector is run.j27
:button选择所有按钮元素和按钮类型的元素。Selects all button elements and elements of type button.j46
:checkbox选择所有类型的元素复选框。Selects all elements of type checkbox.j35
:checkedinput:checked选择每个选中的<input>元素Selects every checked <input> element3w40s23j09
:defaultinput:default选择默认的<input>元素Selects the default <input> elements24
:contains()选择所有包含指定文本的元素。Select all elements that contain the specified text.j13
:disabledinput:disabled选择每个禁用的<input>元素Selects every disabled <input> element3w39s25j47
:emptyp:empty选择每个没有子元素的<p>元素(包括文本节点)Selects every <p> element that has no children (including text nodes)3w36s26j21
:enabledinput:enabled选择每个启用的<input>元素Selects every enabled <input> element3w38s27j03
:eq()选择匹配集中索引n处的元素。Select the element at index n within the matched set.j41
:even选择零索引的偶数元素。另请参阅。Selects even elements, zero-indexed. See also odd.j55
:file选择文件类型的所有元素。Selects all elements of type file.j02
:first选择第一个匹配的DOM元素。Selects the first matched DOM element.j48
:first-childp:first-child选择作为其父级的第一个子级的每个<p>元素Selects every <p> element that is the first child of its parent2w17s28j58
:first-of-typep:first-of-type选择作为其父级的第一个<p>元素的每个<p>元素Selects every <p> element that is the first <p> element of its parent3w32s31j43
:focusinput:focus选择具有焦点的输入元素Selects the input element which has focuss32j42
:hovera:hover在鼠标悬停时选择链接Selects links on mouse overs33
:in-rangeinput:in-range选择值在指定范围内的输入元素Selects input elements with a value within a specified ranges34
:indeterminateinput:indeterminate选择处于不确定状态的输入元素Selects input elements that are in an indeterminate states35
:invalidinput:invalid选择具有无效值的所有输入元素Selects all input elements with an invalid values36
:gt()选择索引大于匹配集中索引的所有元素。Select all elements at an index greater than index within the matched set.j17
:has()选择包含至少一个与指定选择器匹配的元素的元素。Selects elements which contain at least one element that matches the specified selector.j14
:header选择所有作为标头的元素,例如h1,h2,h3等。Selects all elements that are headers, like h1, h2, h3 and so on.j40
:hidden选择所有隐藏的元素。Selects all elements that are hidden.j07
:image选择图像类型的所有元素。Selects all elements of type image.j25
:input选择所有输入,文本区域,选择和按钮元素。Selects all input, textarea, select and button elements.j28
:lang(language)p:lang(it)选择每个<p>元素的lang属性等于" it"(意大利语)Selects every <p> element with a lang attribute equal to "it" (Italian)2w18s37j32
:last选择最后一个匹配的元素。Selects the last matched element.j16
:last-childp:last-child选择作为其父级的最后一个子级的每个<p>元素Selects every <p> element that is the last child of its parent3w31s38j50
:last-of-typep:last-of-type选择作为其父级的最后一个<p>元素的每个<p>元素Selects every <p> element that is the last <p> element of its parent3w33s39j34
:linka:link选择所有未访问的链接Selects all unvisited links1w02s40
:visiteda:visited选择所有访问的链接Selects all visited linkss58
:visible选择所有可见的元素。Selects all elements that are visible.j15
:lt()选择索引小于匹配集中索引的所有元素。Select all elements at an index less than index within the matched set.j61
:not(selector):not(p)选择不是<p>元素的每个元素Selects every element that is not a <p> element3w41s41j30
:nth-child(n)p:nth-child(2)选择作为其父级的第二个子级的每个<p>元素Selects every <p> element that is the second child of its parent3w27s42j44
:nth-last-child(n)p:nth-last-child(2)选择每个<p>元素作为其父级的第二个子级,从最后一个子级开始计数Selects every <p> element that is the second child of its parent, counting from the last child3w28s43j54
:nth-last-of-type(n)p:nth-last-of-type(2)从最后一个子元素开始,选择作为其父元素的第二个<p>元素的每个<p>元素Selects every <p> element that is the second <p> element of its parent, counting from the last child3w30s44j39
:nth-of-type(n)p:nth-of-type(2)选择作为其父级的第二个<p>元素的每个<p>元素Selects every <p> element that is the second <p> element of its parent3w29s45j37
:odd选择零索引的奇数元素。另请参见。Selects odd elements, zero-indexed. See also even.j06
:only-childp:only-child选择作为其父级唯一子级的每个<p>元素Selects every <p> element that is the only child of its parent3w34s47j01
:only-of-typep:only-of-type选择作为其父级的唯一<p>元素的每个<p>元素Selects every <p> element that is the only <p> element of its parent3w35s46j59
:optionalinput:optional选择没有"必需"属性的输入元素Selects input elements with no "required" attributes48
:out-of-rangeinput:out-of-range选择值超出指定范围的输入元素Selects input elements with a value outside a specified ranges49
:read-onlyinput:read-only选择指定了"只读"属性的输入元素Selects input elements with the "readonly" attribute specifieds51
:read-writeinput:read-write选择未指定"只读"属性的输入元素Selects input elements with the "readonly" attribute NOT specifieds52
:requiredinput:required选择指定了"必需"属性的输入元素Selects input elements with the "required" attribute specifieds53
:root:root选择文档的根元素Selects the document's root element3w26s54
:parent选择具有至少一个子节点的所有元素(元素或文本)。Select all elements that have at least one child node (either an element or text).j08
:password选择类型为password的所有元素。Selects all elements of type password.j57
:radio选择单选类型的所有元素。Selects all elements of type radio.j60
:reset选择所有类型为reset的元素。Selects all elements of type reset.j11
:root选择作为文档根的元素。Selects the element that is the root of the document.j29
:selected选择所有选定的元素。Selects all elements that are selected.j36
:submit选择类型为Submit的所有元素。Selects all elements of type submit.j33
:target#news:target选择当前活动的#news元素(单击包含该锚名称的URL)Selects the current active #news element (clicked on a URL containing that anchor name)3w37s56j04
:text选择文本类型的所有输入元素。Selects all input elements of type text.j23
:validinput:valid选择具有有效值的所有输入元素Selects all input elements with a valid values57
.class.intro选择所有带有class =" intro"的元素Selects all elements with class="intro"1w06s01j53
.class1 .class2.name1 .name2选择名称为name1的元素的后代的所有名称为name2的元素Selects all elements with name2 that is a descendant of an element with name1s03
.class1.class2.name1.name2选择其class属性中同时设置了name1和name2的所有元素Selects all elements with both name1 and name2 set within its class attributes02
[attribute][target]选择具有目标属性的所有元素Selects all elements with a target attribute2w13s13j62
[attribute*=value]a[href*="w3schools"]选择其href属性值包含子字符串" w3schools"的每个<a>元素Selects every <a> element whose href attribute value contains the substring "w3schools"3w25s19j45
[attribute^=value]a[href^="https"]选择其href属性值以" https"开头的每个<a>元素Selects every <a> element whose href attribute value begins with "https"3w23s17j22
[attribute=value][target=_blank]选择所有具有target =" _ blank"的元素Selects all elements with target="_blank"2w14s14j49
[name!="value"]选择不具有指定属性或具有指定属性但不具有特定值的元素。Select elements that either don’t have the specified attribute, or do have the specified attribute but not with a certain value.j24
[attribute|=value][lang|=en]选择所有以" en"开头的lang属性值的元素Selects all elements with a lang attribute value starting with "en"2w16s16j05
[attribute~=value][title~=flower]选择标题属性包含单词" flower"的所有元素Selects all elements with a title attribute containing the word "flower"2w15s15j10
[attribute$=value]a[href$=".pdf"]选择每个href属性值以" .pdf"结尾的<a>元素Selects every <a> element whose href attribute value ends with ".pdf"3w24s18j51
[name="value"][name2="value2″]匹配与所有指定的属性过滤器匹配的元素。并且Matches elements that match all of the specified attribute filters.j26
**选择所有元素Selects all elements2w12s05j52
#id#firstname选择id =" firstname"的元素Selects the element with id="firstname"1w07s04j31
elementp选择所有<p>元素Selects all <p> elements1w01s06j38
element elementdiv p选择<div>元素内的所有<p>元素. 后代("祖先 后代")Selects all <p> elements inside <div> elements1w11s09j56
element,elementdiv, p选择所有<div>元素和所有<p>元素. 多选Selects all <div> elements and all <p> elementss08j20
element.classp.intro选择所有带有class =" intro"的<p>元素Selects all <p> elements with class="intro"1w08s07
element+elementdiv + p选择紧接在<div>元素之后的所有<p>元素. 下一个相邻("上一个+下一个")Selects all <p> elements that are placed immediately after <div> elements2w22s11j19
element>elementdiv > p选择所有<p>元素,其中父元素是<div>元素. 子选择("父>子")Selects all <p> elements where the parent is a <div> element2w21s10j18
element1~element2p ~ ul选择每个以<p>元素开头的<ul>元素. 下一个兄弟姐妹("上一个〜兄弟姐妹")Selects every <ul> element that are preceded by a <p> element3w42s12j12
.c#myidclass =" c"和ID等于" myid"的元素the element with class="c" and ID equal to "myid"1w10
E#myidID等于" myid"的E元素an E element with ID equal to "myid"1w09

4. See also

4.1 浏览器引擎支持对比

https://zh.wikipedia.org/wiki/瀏覽器引擎CSS支援比較
https://en.wikipedia.org/wiki/Comparison_of_browser_engines_(CSS_support)
https://en.wikipedia.org/wiki/Comparison_of_browser_engines_(HTML_support)
https://en.wikipedia.org/wiki/Comparison_of_browser_engines_(graphics_support)
https://en.wikipedia.org/wiki/Comparison_of_browser_engines_(typography_support)
https://en.wikipedia.org/wiki/Comparison_of_browser_engines
https://en.wikipedia.org/wiki/Comparison_of_web_browsers
https://en.wikipedia.org/wiki/HTML_attribute

4.2 RWD响应式网页设计

https://en.wikipedia.org/wiki/Responsive_web_design
https://zh.wikipedia.org/wiki/响应式网页设计 
响应式网页设计(英语:Responsive web design,通常缩写为RWD),或称自适应网页设计、回应式网页设计、对应式网页设计。 是一种网页设计的技术做法,该设计可使网站在不同的设备(从桌面电脑显示器到移动电话或其他移动产品设备)上浏览时对应不同分辨率皆有适合的呈现,减少用户进行缩放、平移和滚动等操作行为。
  • 采用 RWD 设计的网站使用CSS3 Media queries,即一种对 @media 规则的扩展,以及流式的基于比例的网格和自适应大小的图像以适应不同大小的设备:
  • 流式网格概念要求页面元素使用相对单位如百分比或字体排印学调整大小,而不是绝对的单位如像素或点。 
  • 灵活的图像也以相对单位调整大小(最大到 100%),以防止它们显示在包含它们的元素外面。 
  • Media queries允许网页根据访问站点设备的特点而使用不同 CSS 样式规则,最常用的是浏览器的宽度。 
https://en.wikipedia.org/wiki/Adaptive_web_design 
自适应网页设计(Adaptive Web Design AWD)促进了网页的多个版本的创建,以更好地适应用户的设备,而不是单个静态页面在所有设备上加载(并显示)相同的静态页面,或者单个页面对内容进行重新排序和调整大小根据用户的设备/ 屏幕尺寸 / 浏览器进行响应。

4.3 CSS框架列表及对比

http://cssframeworks.org/
https://en.wikipedia.org/wiki/CSS_framework#List_of_notable_CSS_frameworks
http://usablica.github.io/front-end-frameworks/compare.html?v=2.0

4.4 Bootstrap(前端框架)

https://getbootstrap.com/
https://github.com/twbs/bootstrap
https://zh.wikipedia.org/wiki/Bootstrap
https://en.wikipedia.org/wiki/Bootstrap_(front-end_framework)
Bootstrap是一个免费的开放源代码 CSS框架,用于响应式,移动优先的 前端Web开发。它包含用于排版,表单,按钮,导航和其他界面组件的CSS和(可选)基于JavaScript的设计模板。 Bootstrap是GitHub上排名第六的项目,拥有135,000多颗星。

4.5 JQuery

https://en.wikipedia.org/wiki/JQuery
https://zh.wikipedia.org/wiki/JQuery
https://github.com/jquery/jquery https://jquery.com/
jQuery是一套跨浏览器的JavaScript库,简化HTML与JavaScript之间的操作。
由约翰·雷西格(John Resig)在2006年1月的BarCamp NYC上发布第一个版本。当前是由Dave Methvin领导的开发团队进行开发。
全球前10,000个访问最高的网站中,有65%使用了jQuery,是当前最受欢迎的JavaScript库。 
子项目 以下项目均是源自于Interface插件
  • jQuery UI 基于jQuery的用户界面库,包括拖放、缩放、对话框、标签页等多个组件。 
  • jQuery Tools jQuery Tools是一个第三方的包,基于jQuery。包括了标签页、窗体验证、鼠标滚轮事件等多个组件。
  • jQuery Mobile 基于jQuery的手机网页制作工具,jQuery Mobile的网站上包含了网页的设计工具、主题设计工具。另外jQuery Mobile的js插件包含了换页、事件等的多项功能。 
https://en.wikipedia.org/wiki/JQTouch
https://en.wikipedia.org/wiki/JQuery_Mobile

2020-03-27

Web-crawler



 
1. spider
 1.1 robots.txt
 1.2 ads.txt
 1.3 security.txt
 1.4 blogger.com 上的 robots.txt和ads.txt
2. 爬虫软件列表
 2.1 介绍一些比较方便好用的爬虫工具和服务
 2.2 33款可用来抓数据的开源爬虫软件工具(全都没试过)
3. 更多相关

1. spider

https://en.wikipedia.org/wiki/Web_crawler
https://zh.wikipedia.org/zh-hans/網路爬蟲
网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。
网络爬虫也可称作网络蜘蛛[1]、蚂蚁、自动索引程序(automatic indexer),或(在FOAF软件中)称为网络疾走(web scutter)。

1.1 robots.txt

放在网页服务器上,告知网络蜘蛛哪些页面内容可获取或不可获取。
https://zh.wikipedia.org/wiki/Robots.txt
https://en.wikipedia.org/wiki/Robots_exclusion_standard
robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
robots.txt协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。注意robots.txt是用字符串比较来确定是否获取URL,所以目录末尾有与没有斜杠“/”表示的是不同的URL。robots.txt允许使用类似"Disallow: *.gif"这样的通配符[1][2]。
其他的影响搜索引擎的行为的方法包括使用robots元数据:
<meta name="robots" content="noindex,nofollow" />
humans.txt
https://en.wikipedia.org/wiki/Robots_exclusion_standard#Alternatives

1.2 ads.txt

a standard for listing authorized ad sellers 列出授权的标准
https://en.wikipedia.org/wiki/Ads.txt

1.3 security.txt

a file to describe the process for security researchers to follow in order to report security vulnerabilities
描述安全研究人员为了报告安全漏洞而要遵循的过程的文件
https://en.wikipedia.org/wiki/Security.txt

1.4 blogger.com 上的 robots.txt和ads.txt

2. 爬虫软件列表

2.1 介绍一些比较方便好用的爬虫工具和服务

https://zhuanlan.zhihu.com/p/57678048
介绍一些比较方便好用的爬虫工具和服务
Chrome 扩展Web Scraperwebscraper.io累计下载30w,点选式的数据抓取,有自己的 Cloud Scraper,支持定时任务、API 式管理、代理切换功能。可导出CSV 等
Data ScraperData-miner.io免费版本每个月只能爬取 500 个页面 可导出CSV 等
Listlylistly.ioexcel
Mercurymercury.postlight.com
框架Scrapyscrapy.orgPython 爬虫学习者使用最多的爬虫框架
PySpidergithub.com/binux/pyspider基于Python, 可视化的管理,在线编程。分布式爬取,可存储到各种数据库。代码来实现编程,可扩展性很强的,简单易用。
Apifysdk.apify.com基于Node.js, 可定制化也非常强,支持各种文件格式的导出,并且支持和 Apify Cloud 的对接实现云爬取。
商业
服务
Parsehubwww.parsehub.com(Mac,Windows,Linux), Firefox扩展, 导出为 JSON, CSV, Google 表格等,基于Web, 可以使用机器学习技术识别复杂的文档. 免费版本限制为 5 个项目,每次限制爬取 200 页
Dexi.iodexi.io可视化点击抓取,自然语言解析工具,网页端完成,可通过控制台来完成任务的运行和调度。提供代理 IP,与第三方集成: http://Box.net、Google Drive 等工具。(之前叫CloudScrape)
Octparsewww.octoparse.com免费版支持创建 10 个爬取的基础服务
Content Grabberwww.contentgrabber.com有验证码识别等解决方案,并使用 Nohodo 作为 IP 代理。数据支持导出常用格式,也支持 PDF 格式导出。
Mozendawww.mozenda.com提供了 FTP、亚马逊 S3、Dropbox 等的支持。
ScraperAPIwww.scraperapi.com提供简易的页面渲染服务,通过 API 来操作的
Diffbotwww.diffbot.com通过机器学习算法、图像识别、自然语言处理等方案综合解析,可说是目前业界数一数二的页面智能解析方案。
Import.iowww.import.io提供了从数据爬取、清洗、加工到应用的一套完整解决方案
Embed.lyembed.ly智能化页面解析方案,类似 Diffbot,可以自动完成页面的解析。
ScrapeStormwww.scrapestorm.com(Mac,Windows,Linux), 支持自动识别翻页, 自动识别内容, JavaScript 渲染, 模拟登录爬取等等。里面是后裔采集器?
Shenjianshou
神箭手
www.shenjian.io国内数一数二的爬虫平台。旗下后裔采集器,就是上文介绍的 ScrapeStorm 所采用的爬取工具.
Bazhuayu
八爪鱼
www.bazhuayu.com国内比较知名的采集器,功能类似后裔采集器,可以通过可视化点选完成爬虫的相关配置,部分功能比后裔采集器更加强大。
Zaoshuzaoshu.io目前已经不面向于个人用户,主要是提供企业数据服务

推荐的爬虫工具, 上文中绿色的2个,就认识Web Scraper。
Scrapy 看起来比较热门。
https://zh.wikipedia.org/wiki/Scrapy
https://en.wikipedia.org/wiki/Scrapy
Scrapy(/ˈskreɪpi/ SKRAY-pee[2]是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的程序框架。该框架主要由Scrapinghub 公司进行维护。

2.2 33款可用来抓数据的开源爬虫软件工具(全都没试过)

http://www.woshipm.com/xiazai/216336.html
ArachnidGPLJavaOS小型HTML解析器http://www.woshipm.com/xiazai/216336.html
crawlzillaApache License 2
Linux中文分词能力https://github.com/shunfa/crawlzilla
Ex-CrawlerGPLv3Java跨平台守护进程执行,数据库存储
HeritrixApacheJava跨平台严格遵照robots文件的排除指示和META robots标签https://github.com/internetarchive/heritrix3
heyDrGPLv3Java跨平台轻量级开源多线程垂直检索爬虫框架
ItSucks
Java
提供swing GUI操作界面
jcrawlApacheJava跨平台轻量、性能优良
JspiderLGPLJava跨平台功能强大,容易扩展
LeopdoApacheJava跨平台全文和分类垂直搜索,以及分词系统
MetaSeeker


网页抓取、信息提取、数据抽取工具包www.gooseeker.com/cn/node/download/front
PlayfishMITJava跨平台通过XML配置文件实现可定制与可扩展
SpidermanApacheJava跨平台灵活、扩展性强,微内核+插件式架构,简单的配置完成抓取,无需编写代码
webmagicApacheJava跨平台国产开源软件http://git.oschina.net/flashsword20/webmagic
Web-HarvestBSDJava
运用XSLT、XQuery、正则表达式等技术来实现对Text或XML的操作,可视化界面
WebSPHINXApacheJava
爬虫工作平台和WebSPHINX类包
YaCyGPLJava Perl跨平台基于P2P的分布式Web搜索引擎
QuickReconGPLv3PythonWindows Linux具有查找子域名名称、收集电子邮件地址并寻找人际关系等功能
PyRailgunMITPython跨平台简洁、轻量、高效的网页抓取框架 (国产)https://github.com/princehaku/pyrailgun#readme
ScrapyBSDPython跨平台基于Twisted的异步处理框架,文档齐全https://github.com/scrapy/scrapy
hispiderBSDC++Linux支持多机分布式下载, 支持网站定向下载
larbinGPLC/C++Linux高性能的爬虫,只负责抓取不负责解析
Methabot
C/C++Windows Linux速度优化, 可抓取web, ftp及本地文件系统http://www.oschina.net/code/tag/methabot
NwebCrawlerGPLv2C#Windows统计信息、执行过程可视化http://www.open-open.com/lib/view/home/1350117470448
SinawlerGPLv3C# .NETWindows国内第一个针对微博数据的爬虫程序!原名“新浪微博爬虫”。
spidernetMITC#Windows以递归树为模型的多线程web爬虫程序,支持以GBK (gb2312)和utf8编码的资源,使用sqlite存储数据https://github.com/nsnail/spidernet
Web CrawlerLGPLJavaLGPL多线程,支持抓取PDF/DOC/EXCEL等文档来源
网络矿工BSDC# .NETWindows功能丰富,毫不逊色于商业软件 (原soukey采摘)
OpenWebSpider
PHP跨平台开源多线程网络爬虫,有许多有趣的功能
PhpDigGPLPHP跨平台具有采集网页内容、提交表单功能http://www.phpdig.net/navigation.php?action=demo
ThinkUpGPLPHP跨平台采集推特、脸谱等社交网络数据的社会媒体视角引擎,可进行交互分析并将结果以可视化形式展现https://github.com/ThinkUpLLC/ThinkUp
微购GPLPHP跨平台基于ThinkPHP框架开发的开源的购物分享系统http://tlx.wego360.com/
EbotGPLv3ErLang跨平台可伸缩的分布式网页爬虫https://github.com/matteoredaelli/ebot
SpidrMITRuby
可将一个或多个网站、某个链接完全抓取到本地


3. 更多相关

为何大量网站不能抓取?爬虫突破封禁的6种常见方法
https://www.cnblogs.com/junrong624/p/5533655.html

当爬虫被拒绝时(Access Denied)
https://www.cnblogs.com/FengYan/archive/2012/07/31/2614335.html
反爬虫四个基本策略 (转自上文)
https://www.cnblogs.com/junrong624/p/5508934.html

2020-03-26

PCup

12年前笔记本电脑升级记录表



¥6,000¥1,360
¥136¥200
ItemHP 6520s2008 初配2013 升级理论提升2020 升级空间
CPUCPU型号T5470T8300
T9300T9500
Code NameMeromPenryn
Penryn
二级缓存2 MB L23 MB L2150%6 MB L2
工艺65 nm45 nm
45 nm
频率1.6 GHz2.4 GHz150%2.5 GHz2.6 GHz
Processing Die Size143 mm2107 mm2
107 mm2
晶体管数量291 million410 million
410 million
Virtualization (VT-x)NoYes支持虚拟机Yes


内存DDR2 800 PC2-64001 GB4 GB800%54mm express或
用于(wifi)的miniPCIe
外置显卡 GTX750Ti
空闲4 GB

外存HDD → SSDHDD 160 GBSSD 240 GB效果显著
DVD → HDDDVDHDD 1TBDVD改硬盘位
  HP 6520s 其他配置
  • 主板 惠普 30D8 ( ICH8M )
  • 芯片 Intel Mobile GM965
  • 显卡 板载 Intel GMA X3100
  • 网络 有线网卡, 无线网卡 54Mbps
  • 插槽 54mm T型 express
  • 电源适配器 19V 65W
当前详细配置(AIDA64 Extreme): https://szosoft.blogspot.com/p/tom-pc2008.html 查看这个详单,以及搜索主板相关资料,该主板最大支持4Gb内存。但当前运行4Gb * 2双通道。除了打游戏,通常打开网页都下面这样顺跑。
曾经的笔记本电脑,CPU,2个内存插槽,硬盘,miniPCIe等都可以升级更换。
现在的笔记本,CPU板载,甚至有些内存都板载了。极大压缩了笔记本电脑的使用年限。不能升级,只能淘汰,太不环保了。

2020-03-24

hard-info

 
1. Windows下查看硬件信息
2. Linux系统查看硬件信息GUI
3. Linux命令行查看硬件设备
 3.1 查看PCI设备
 3.2 查看CPU
 3.3 查看内存
 3.4 查看显卡
 3.5 查看硬盘
 3.6 查看网络
 3.7 综合

1. Windows下查看硬件信息

cpu-z 查看CPU,GPU,MB,RAM等主要部件。
https://www.cpuid.com/softwares.html

更加详细专业的有: AIDA64...
http://www.aida64.com/downloads/latesta64xe
安装后有1个月试用期。可以导出非常详细的系统信息,比如下面这样:
https://szosoft.blogspot.com/p/tom-pc2008.html

2. Linux系统查看硬件信息GUI

使用命令或快捷方式打开:
$ lstopo
打开后还有快捷键提示,如下图,可以看到2个硬盘分别接入那个地址,网卡使用那个PCI地址。

$ sudo hardinfo
可以看到硬件及操作系统软件的详细信息,如下图,可以看到这个x1的PCIe最大速率2.5GT/s

$ sudo lshw -X
打开若不显示任何内容,点一下Refresh刷新即可,如下图,可以看到USB的版本及速率

lshw的多种输出格式
$ lshw –help
 -html   output hardware tree as HTML 将硬件树输出为HTML
 -xml    output hardware tree as XML 将硬件树输出为XML
 -short  output hardware paths    输出硬件路径
 -businfo output bus information   输出总线信息
 -X      use graphical interface  使用图形界面
$ sudo lshw -html > lshw-html.html

3. Linux命令行查看硬件设备

3.1 查看PCI设备

$ lspci          PCI设备列表,第一列就是设备的[ids]
$ lspci -tvnn    PCI设备树状列表,可以看到PCIe端口被那些设备占用$ lspci -vvvnn -s [ids] 根据上面列表的[ids]查询详细信息
$ lsusb.py -i            查看USB端口及设备,可以看到USB版本及速率,电流$ ls -l /dev/disk/by-path/ 查看硬盘使用了那些端口
根据上面这些查询就能列出类似如下这张PCI设备的整体列表了
$ lspci简述$ lspci -tvnn$ lspci -vvvnn -s [ids] // 00:02.0
[ids]nameIntel Corporationtype补充树状显示pinIRQKernel driverKernel modulesBridgeCtl:
00:00.0Host bridge:Mobile PM965/GM965/GL960 Memory Controller HubHostbridge



intel_agp
00:02.0VGA compatible controller:Mobile GM965/GL960 Integrated Graphics Controller (primary)VGA板载显卡
A16i915i915
00:02.1Display controller:Mobile GM965/GL960 Integrated Graphics Controller (secondary)Display






00:19.0Ethernet controller:82562GT 10/100 Network ConnectionEthernet以太网卡
A28e1000ee1000e
10:00.0Network controller:PRO/Wireless 3945ABG [Golan] Network ConnectionWireless无线网卡-- PCIe Port 2A30iwl3945iwl3945
00:1b.0Audio device:82801H (ICH8 Family) HD Audio ControllerAudio声卡
A29snd_hda_intelsnd_hda_intel
00:1e.0PCI bridge:82801 Mobile PCI BridgePCIbridge02 --



Parity- SERR+ NoISA+ VGA- VGA16- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
00:1c.0PCI bridge:82801H (ICH8 Family) PCI Express Port 1PCIePort 1 bridge08 --A24pcieport
00:1c.1PCI bridge:82801H (ICH8 Family) PCI Express Port 2PCIePort 2 bridge10 WirelessB25pcieport
00:1c.4PCI bridge:82801H (ICH8 Family) PCI Express Port 5PCIePort 5 bridge28 USB3.0A26pcieport
00:1a.0USB controller:82801H (ICH8 Family) USB UHCI Controller #4USB#4usb3A16uhci_hcduhci_hcd
00:1a.7USB controller:82801H (ICH8 Family) USB2 EHCI Controller #2USB2#2usb1C18ehci-pciehci-pci
00:1d.0USB controller:82801H (ICH8 Family) USB UHCI Controller #1USB#1usb4A20uhci_hcduhci_hcd
00:1d.1USB controller:82801H (ICH8 Family) USB UHCI Controller #2USB#2usb5B21uhci_hcduhci_hcd
00:1d.2USB controller:82801H (ICH8 Family) USB UHCI Controller #3USB#3usb6C18uhci_hcduhci_hcd
00:1d.7USB controller:82801H (ICH8 Family) USB2 EHCI Controller #1USB2#1usb2 SDA20ehci-pciehci-pci
28:00.0USB controller:Renesas Technology Corp.
uPD720202 USB 3.0 Host Controller
USB 3.0ExpressCardusb7,8 PCIe P5A16xhci_hcdxhci_hcd
00:1f.0ISA bridge:82801HM (ICH8M) LPC Interface ControllerISAbridge


lpc_ichlpc_ich
00:1f.1IDE interface:82801HM/HEM (ICH8M/ICH8M-E) IDE ControllerIDEHDD$ ls -l /dev/disk/by-path/A16ata_piixata_piix, pata_acpi, ata_generic
00:1f.2SATA controller:82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]SATASSDB27ahciahci

3.2 查看CPU

$ cat /proc/cpuinfo | grep model\ name
model name: Intel(R) Core(TM)2 Duo CPU  T8300  @ 2.40GHz
model name: Intel(R) Core(TM)2 Duo CPU  T8300  @ 2.40GHz

3.3 查看内存

$ cat /proc/meminfo | grep MemTotal
MemTotal:        8146664 kB

3.4 查看显卡

$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (primary) (rev 0c)
找到显卡的ids,再查看详细内容
$ lspci -vvvnn -s 00:02.0
查看详细内容,除了用上面的ids,也可以用简单的关键字VGA
$ lspci -vnn | grep VGA -A 12

$ sudo lshw -c video | grep configuration
       configuration: driver=i915 latency=0
       configuration: latency=0

使用 glxinfo 命令查看 OpenGL 的详细信息:
$ glxinfo |grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) 965GM
OpenGL version string: 2.1 Mesa 19.3.4
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 19.3.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:
$ pacman -Qo glxinfo
/usr/bin/glxinfo is owned by mesa-demos 8.4.0-2
  •   Arch 下安装 pacman S mesa-demos
  •   Ubuntu下安装 apt install mesa-utils
Mesa是一个开源的3D计算机图形库,它提供了一个通用的OpenGL实现,用于在多个平台上渲染三维图形。
http://www.mesa3d.org/

和GPU 相关的 Linux 命令
$ glxinfo | grep rendering 查看3D加速是否有效
$ glxgears -info         Testing
$ nvidia-smi             Nvidia自带一个命令行工具可以查看显存的使用情况
$ watch -n 10 nvidia-smi 周期性的输出显卡的使用情况,可以用watch指令实现
$ grep -i --color vga /var/log/Xorg.0.log
https://zhuanlan.zhihu.com/p/37640419

3.5 查看硬盘

$ lsblk -f
# blkid
df(disk free)
du(disk usage)

3.6 查看网络

ip, iw...
https://szosoft.blogspot.com/2020/02/ip-show.html
https://szosoft.blogspot.com/2020/03/busybox.html#205
https://www.cnblogs.com/sztom/articles/10764994.html

3.7 综合


设备\命令$ lshw -c [class]# dmidecode -t [type]$ lspci -s [ids]$ cat /proc/更多命令
CPUprocessorprocessor-cpuinfo$ lscpu
内存memorymemory-meminfo$ lsmem
显卡display, video-[ids]
$ lsgpu
声卡multimedia-[ids]./asound/
系统systemsystem


总线bus, bridge-[ids]./bus/$ lspci
网卡network-[ids]

存储storage-[ids]./scsi/lsblk, blkid,
Du, df, fdisk
可用项:$ lshw -short输错类型便会列出可用项lspci 返回的第一列



Diode

导航 (返回顶部) 1. Diode 1.1 Diode 概述 1.2 肖克利二极管方程 1.3 缩写 Abbreviations 2. 主要功能 2.1 单向电流 (Unidirectional current flow) 2.2 阈值电压 (Threshold...