提取標簽里的內容
下面標簽title的內容是:我只是個實驗 - SCRAPY。用response.css('title::text').extract_first()提取。
標簽名后::加text的方法。
<title>我只是個實驗 - SCRAPY</title>
結果:
response.css('title::text').extract_first()
>>>'我只是個實驗 - SCRAPY'
有時候,沒有標簽名可以用,只有class,標簽名換成class名,前面加個點,點是css對class的標識。
如:response.css('.classname::text').extract_first()
有時候,沒有標簽名,連兩個class,我們可以直接寫兩個class名,自己靈活掌握,多試試,要注意
兩個class名間用空格隔開。
如:response.css('.classname1 .classname2::text').extract_first()
公式
response.css('標簽名::text').extract_first()
提取標簽的屬性
標簽屬性,就是http開頭的,一般是網頁地址:
<li><a href="http://lab.scrapyd.cn/page/2/">2</a></li>
class和id代碼時,需要換成點加class名字:.classname,id時,換成井號加id名字:#idname
response.css(".post-content img::attr(src)").extract()
然后套用下面公式
公式
response.css('.classname或者#idname 標簽名::attr(屬性名)').extract()
下面所有用法記錄,有需要看一下,反正我不會看
| 選擇器 | 示例 | 示例說明 | CSS |
|---|---|---|---|
| .class | .intro | 選擇所有class="intro"的元素 | 1 |
| #id | #firstname | 選擇所有id="firstname"的元素 | 1 |
| * | * | 選擇所有元素 | 2 |
| element | p | 選擇所有<p>元素 | 1 |
| element,element | div,p | 選擇所有<div>元素和<p>元素 | 1 |
| element element | div p | 選擇<div>元素內的所有<p>元素 | 1 |
| element>element | div>p | 選擇所有父級是 <div> 元素的 <p> 元素 | 2 |
| element+element | div+p | 選擇所有緊接着<div>元素之后的<p>元素 | 2 |
| [attribute] | [target] | 選擇所有帶有target屬性元素 | 2 |
| [attribute=value] | [target=-blank] | 選擇所有使用target="-blank"的元素 | 2 |
| [attribute~=value] | [title~=flower] | 選擇標題屬性包含單詞"flower"的所有元素 | 2 |
| [attribute|=language] | [lang|=en] | 選擇一個lang屬性的起始值="EN"的所有元素 | 2 |
| :link | a:link | 選擇所有未訪問鏈接 | 1 |
| :visited | a:visited | 選擇所有訪問過的鏈接 | 1 |
| :active | a:active | 選擇活動鏈接 | 1 |
| :hover | a:hover | 選擇鼠標在鏈接上面時 | 1 |
| :focus | input:focus | 選擇具有焦點的輸入元素 | 2 |
| :first-letter | p:first-letter | 選擇每一個<P>元素的第一個字母 | 1 |
| :first-line | p:first-line | 選擇每一個<P>元素的第一行 | 1 |
| :first-child | p:first-child | 指定只有當<p>元素是其父級的第一個子級的樣式。 | 2 |
| :before | p:before | 在每個<p>元素之前插入內容 | 2 |
| :after | p:after | 在每個<p>元素之后插入內容 | 2 |
| :lang(language) | p:lang(it) | 選擇一個lang屬性的起始值="it"的所有<p>元素 | 2 |
| element1~element2 | p~ul | 選擇p元素之后的每一個ul元素 | 3 |
| [attribute^=value] | a[src^="https"] | 選擇每一個src屬性的值以"https"開頭的元素 | 3 |
| [attribute$=value] | a[src$=".pdf"] | 選擇每一個src屬性的值以".pdf"結尾的元素 | 3 |
| [attribute*=value] | a[src*="runoob"] | 選擇每一個src屬性的值包含子字符串"runoob"的元素 | 3 |
| :first-of-type | p:first-of-type | 選擇每個p元素是其父級的第一個p元素 | 3 |
| :last-of-type | p:last-of-type | 選擇每個p元素是其父級的最后一個p元素 | 3 |
| :only-of-type | p:only-of-type | 選擇每個p元素是其父級的唯一p元素 | 3 |
| :only-child | p:only-child | 選擇每個p元素是其父級的唯一子元素 | 3 |
| :nth-child(n) | p:nth-child(2) | 選擇每個p元素是其父級的第二個子元素 | 3 |
| :nth-last-child(n) | p:nth-last-child(2) | 選擇每個p元素的是其父級的第二個子元素,從最后一個子項計數 | 3 |
| :nth-of-type(n) | p:nth-of-type(2) | 選擇每個p元素是其父級的第二個p元素 | 3 |
| :nth-last-of-type(n) | p:nth-last-of-type(2) | 選擇每個p元素的是其父級的第二個p元素,從最后一個子項計數 | 3 |
| :last-child | p:last-child | 選擇每個p元素是其父級的最后一個子級。 | 3 |
| :root | :root | 選擇文檔的根元素 | 3 |
| :empty | p:empty | 選擇每個沒有任何子級的p元素(包括文本節點) | 3 |
| :target | #news:target | 選擇當前活動的#news元素(包含該錨名稱的點擊的URL) | 3 |
| :enabled | input:enabled | 選擇每一個已啟用的輸入元素 | 3 |
| :disabled | input:disabled | 選擇每一個禁用的輸入元素 | 3 |
| :checked | input:checked | 選擇每個選中的輸入元素 | 3 |
| :not(selector) | :not(p) | 選擇每個並非p元素的元素 | 3 |
| ::selection | ::selection | 匹配元素中被用戶選中或處於高亮狀態的部分 | 3 |
| :out-of-range | :out-of-range | 匹配值在指定區間之外的input元素 | 3 |
| :in-range | :in-range | 匹配值在指定區間之內的input元素 | 3 |
| :read-write | :read-write | 用於匹配可讀及可寫的元素 | 3 |
| :read-only | :read-only | 用於匹配設置 "readonly"(只讀) 屬性的元素 | 3 |
| :optional | :optional | 用於匹配可選的輸入元素 | 3 |
| :required | :required | 用於匹配設置了 "required" 屬性的元素 | 3 |
| :valid | :valid | 用於匹配輸入值為合法的元素 | 3 |
| :invalid | :invalid | 用於匹配輸入值為非法的元素 | 3 |
