上圖顯示的是首頁的dom樹,顯然只需提取出class為post_item的div,再重中提取出class為titlelnk的a標誌即可。這樣的功能可以通過以下函式來實現:
/// ///在文字html的文字查詢標誌名為tagname,並且屬性attrname的值為attrvalue的所有標誌
///
例如:findtagbyattr(html, "div", "class", "demo")
///
返回所有class為demo的div標誌
///
public static
list
<
htmltag
> findtagbyattr(
string
html,
string
tagname,
string
attrname,
string
attrvalue)
\s[^<>]*\s*=\s*(\x27|\x22)(\x27|\x22)[^<>]*>"
, tagname, attrname, attrvalue);
return
findtag(html, tagname, format);
}public static
list
<
htmltag
> findtag(
string
html,
string
name,
string
format)
)(\s[^<>]*|)>"
, name),
regexoptions
.ignorecase);
list
<
htmltag
> tags =
new
list
<
htmltag
>();
int
start = 0;
while
(true
)
start = tagmatch.index + tagmatch.length;
if (tagmatch.groups[1].value ==
"/") begintagcount--;
else
begintagcount++;
if (begintagcount == 0)
break
; }
if (tagmatch !=
null
)
else
}else
}return
tags;
}
public staticstring
gethtml(
string
url)
return
encoding
.getencoding(response.characterset).getstring(buffer.getbuffer());
}catch
}
class執行結果如下:program}}
}}
部落格園200頁資料的抓取
首先直接上手requests獲取 資料,發現可以直接獲取。因此不需要進行多餘的反爬措施,只需要專注於資料的獲取邏輯。資料是直接放在源 中的。資料獲取 觀察頁面源 可知 資料都是存放在 標籤下,可以選擇先獲取某個部落格的所有內容隨後再進行資訊的獲取 資料的獲取則是使用select函式,css選擇器來獲...
抓取csdn部落格的所有文章url
輸入部落格的主網域名稱,就可以抓取這個部落格所有的文章編號。coding utf8 import string import urllib2 import re import time import random class csdn spider def init self,url self.my...
使用metablog遷移部落格園的文章
有時候我們希望能將自己所有的文章遷移到其他的部落格site,大家可能最先想到的就是metablog,沒錯,只有它了。首先搜尋了一下,很容易搜到老趙這篇文章 一次批量修改部落格文章的經驗 我個人不懂f 也不太喜歡老趙的做法,就重新考慮了一下。和老趙有一樣的問題,metablog的api中的getrec...