1、 css選擇器支持文本正則表達式嗎,css派生選擇器有幾種?
基本選擇器
1.標簽選擇器:直接用元素的標簽來進行選擇
span { // 直接選擇span標簽
size:16px;
}
1
2
3
1
2
3
2.ID選擇器:通過設置id名字,進行精確的選擇,用#來定義
# div1 { //通過id名字來進行選擇
color:red;
}
<div id="div1">1</div>
1
2
3
4
1
2
3
4
3.類選擇器:通過類名來進行選擇,選擇范圍比id選擇器大,用’.'來定義
.div1 { //所有類名為div1的都被選擇了
color:red;
}
<div id="div1">1</div>
<div id="div1">1</div>
<div id="div1">1</div>
1
2
3
4
5
6
1
2
3
4
5
6
4.通配符選擇器:范圍更大,作用于所有標簽,用*來定義
不建議使用,對頁面加載負擔大
高級選擇器
1.后代選擇器:定義用空格隔開
div span { //選擇的是div標簽下的span標簽,當然后代顧名思義可以不止隔一代,可以隔多代進行選擇
color:red;
}
<div><span>1</span></div>
1
2
3
4
1
2
3
4
2.交集選擇器:與后代選擇器定義的不同是,沒有空格隔開,兩個元素緊挨著
span#a1 { //選擇的是兩個條件1.既是span標簽的 2.id名是a1的元素,兩個條件缺一不可
color:red;
}
<span id=“a1”>1</span>
<span >1</span>
1
2
3
4
5
1
2
3
4
5
3.并集選擇器:定義用逗號隔開
span,#a1 { //選擇的是1.是span標簽的 2.id名是a1的元素,兩個條件滿足一個即可
color:red;
}
<span id=“a1”>1</span>
<span >1</span>
1
2
3
4
5
1
2
3
4
5
4.偽類選擇器:
1.靜態偽類:點擊連接之前(link),點擊連接之后(visited)這樣的
2.動態偽類:鼠標移入(hover),點擊之后(focus)
2、 CSS中有哪些常用選擇器?
一、CSS選擇器有哪些
CSS中的選擇器很多,比如:ID選擇器,類選擇器,通配符選擇器,偽類選擇器等等,接下來主要介紹常用的幾個。
1.標簽選擇器
語法:標簽名{},eg:h1{}//為所有的h1元素設置樣式。
2.ID選擇器
語法:#id名{}//id值唯一不能重復,eg:#top{}//為id為top的元素設置樣式。
3.類選擇器
語法:.class{},eg:.box{}//為所有的class值為box的元素設置樣式。
4.組選擇器
語法:選擇器1,選擇器2,選擇器N{},eg:#box1,.box2,p{}//為id為box1,class為box2和p的元素共同設置樣式。
5、通配符選擇器
語法:*{},eg:*{font-size:16px}//將整個頁面字體大小設為16px。
6.后代選擇器
語法:選擇器1選擇器2{},eg:p.aa{}//選中指定祖先元素p的指定后代.aa。
7.子元素選擇器
語法:父元素>子元素{},eg:p>.box{}//選中父元素p的指定子元素.box。注意與后代元素選擇器的區別
8.偽類選擇器
偽類可以用來表示一些特殊的狀態,如:
:link-未訪問過的超鏈接。
:visited-已訪問過的超鏈接。
:hover-鼠標經過的元素。
:active-正在點擊的元素。
eg:a:hover{color:red}//鼠標經過a標簽時,顏色變為紅色。
二、CSS選擇器的優先級順序
當同一屬性的不同值都作用到了同一個元素時,如果定義的屬性之間有沖突,那么應該用誰的值的,這個時候就涉及到CSS的優先級順序了。
1.在屬性后面使用!important會覆蓋頁面內任何位置定義的元素樣式。
2.作為style屬性寫在元素內的內部樣式
3.id選擇器
4.類選擇器
5.標簽選擇器
6.通配符選擇器
7.瀏覽器自定義或繼承的
3、 webmagic詳解?
WebMagic是一個開源的Java垂直爬蟲框架,目標是簡化爬蟲的開發流程,讓開發者專注于邏輯功能的開發。設計原理
webmagic采用完全模塊化的設計,功能覆蓋整個爬蟲的生命周期(鏈接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分布式抓取,并支持自動重試、自定義UA/cookie等功能。
webmagic包含頁面抽取功能,開發者可以使用css selector、xpath和正則表達式進行鏈接和內容的提取,支持多個選擇器鏈式調用。
使用maven
webmagic使用maven管理依賴,在項目中添加對應的依賴即可使用webmagic:
WebMagic 使用slf4j-log4j12作為slf4j的實現.如果你自己定制了slf4j的實現,請在項目中去掉此依賴。
項目結構
webmagic主要包括兩個包:
webmagic-corewebmagic核心部分,只包含爬蟲基本模塊和基本抽取器。webmagic-core的目標是成為網頁爬蟲的一個教科書般的實現。
webmagic-extensionwebmagic的擴展模塊,提供一些更方便的編寫爬蟲的工具。包括注解格式定義爬蟲、JSON、分布式等支持。
webmagic還包含兩個可用的擴展包,因為這兩個包都依賴了比較重量級的工具,所以從主要包中抽離出來,這些包需要下載源碼后自己編譯。
4、 如何使用正則表達式?
QTP使用正則表達式有2種方式,一種是在“常量值選項”對話框或“參數選項”對話框的“值”框中輸入字符串的正則表達式語法,可以定義正則表達式。選中“正則表達式”復選框,以指示QuickTest將該值作為正則表達式處理。另一種是使用描述性編程,所有編程描述屬性值都均自動作為正則表達式處理。注意:您可以只將正則表達式應用于字符串類型的值。默認情況下,除了句點(.)、連字符(-)、星號(*)、插字號(^)、方括號([ ])、圓括號(())、貨幣符號($)、垂直線(|)、加號(+)、問號(?)和反斜杠(\)以外,QuickTest將正則表達式中的所有字符作為文字處理。當一個特殊字符前面帶有反斜杠(\)時,QuickTest將其作為文字字符處理。如果在“常量值選項”或“參數選項”對話框的“值”框中輸入一個特殊字符,QuickTest會詢問您是否要在每個特殊字符前面添加一個反斜杠(\)。如果單擊“是”,則相應的特殊字符前面就會加上一個反斜杠(\),以指示QuickTest將該字符作為文字處理。如果單擊“否”,QuickTest將該特殊字符作為正則表達式字符處理。本節描述某些更常用的選項,可用于創建正則表達式:? 使用反斜杠字符( \ )? 匹配任意單個字符( . )? 匹配列表中的任意單個字符( [xy] )? 匹配不在列表中的任意單個字符( [^xy] )? 匹配某個范圍內的任意單個字符( [x-y] )? 特定字符的零次或多次匹配( * )? 特定字符的一次或多次匹配( + )? 特定字符的零次或一次匹配( ? )? 對正則表達式進行分組( ( ) )? 匹配幾個正則表達式中的一個表達式( | )? 在一行的開始進行匹配( ^ )? 在一行的結尾進行匹配( $ )? 匹配包括下劃線在內的任一字母數字字符( \w )? 匹配任意非字母數字字符( \W )? 組合正則表達式操作符正則表達式的語法規則和標記字符描述:^符號匹配字符串的開頭。例如:^abc 與“abc xyz”匹配,而不與“xyz abc”匹配$符號匹配字符串的結尾。例如:abc$ 與“xyz abc”匹配,而不與“abc xyz”匹配。注意:如果同時使用^符號和$符號,將進行精確匹配。例如:^abc$ 只與“abc”匹配 *符號匹配0個或多個前面的字符。例如:ab* 可以匹配“ab”、“abb”、“abbb”等+符號匹配至少一個前面的字符。例如:ab+ 可以匹配“abb”、“abbb”等,但不匹配“ab”。?符號匹配0個或1個前面的字符。例如:ab?c? 可以且只能匹配“abc”、“abbc”、“abcc”和“abbcc”.符號匹配除換行符以外的任何字符。例如:(.)+ 匹配除換行符以外的所有字符串x|y匹配“x”或“y”。例如:abc|xyz 可匹配“abc”或“xyz”,而“ab(c|x)yz”匹配“abcyz”和“abxyz”{n}匹配恰好n次(n為非負整數)前面的字符。例如:a{2} 可以匹配“aa“,但不匹配“a”{n,}匹配至少n次(n為非負整數)前面的字符。例如:a{3,} 匹配“aaa”、“aaaa”等,但不匹配“a”和“aa”。注意:a{1,}等價于a+a{0,}等價于a*{m,n}匹配至少m個,至多n個前面的字符。例如:a{1,3} 只匹配“a”、“aa”和“aaa”。注意:a{0,1}等價于a?[xyz]表示一個字符集,匹配括號中字符的其中之一。