⑴ Python爬虫如何写
Python的爬虫库其实很多,像常见的urllib,requests,bs4,lxml等,初始入门爬虫的话,可以学习一下requests和bs4(BeautifulSoup)这2个库,比较简单,也易学习,requests用于请求页面,BeautifulSoup用于解析页面,下面我以这2个库为基础,简单介绍一下Python如何爬取网页静态数据和网页动态数据,实验环境win10+python3.6+pycharm5.0,主要内容如下:
Python爬取网页静态数据
这个就很简单,直接根据网址请求页面就行,这里以爬取糗事网络上的内容为例:
1.这里假设我们要爬取的文本内容如下,主要包括昵称、内容、好笑数和评论数这4个字段:
打开网页源码,对应网页结构如下,很简单,所有字段内容都可以直接找到:
2.针对以上网页结构,我们就可以编写相关代码来爬取网页数据了,很简单,先根据url地址,利用requests请求页面,然后再利用BeautifulSoup解析数据(根据标签和属性定位)就行,如下:
程序运行截图如下,已经成功爬取到数据:
Python爬取网页动态数据
很多种情况下,网页数据都是动态加载的,直接爬取网页是提取不到任何数据的,这时就需要抓包分析,找到动态加载的数据,一般情况下就是一个json文件(当然,也敬链誉可能是其他类型的文件,像xml等),然后请求解析这个json文件,就能获取到我们需要的数据,这里以爬取人人贷上面的散标数据为例:
1.这里假设我们爬取的数据如下,主要包括年亮段利率,借款标题,期限,金额,进度这5个字段:
2.按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就可以找到动态加载的json文件,具体信息如下:
3.接着,针对以上抓包分析,我们就可以编写相关代码来爬取数据了,基本思路和上面的静态网页差不多,先利用requests请求json,然后再利用python自带的json包解析数据就行,如下:
程序运行截图如下,已经成功获取到数据:
至此,我们就完成了利用python来爬取网页数据。总的来说,整个过程很简单,requests和BeautifulSoup对于初学者来说,非常容易学习,也易掌握,可以学习使用一下,后期熟悉后,可以学习一下scrapy爬虫框架,可以明显提高开发效率,非常不错,当然,网页中要是有加密、验证码等,这个就需要自己好好琢磨,研究对策了,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分唤陆享的内容能对你上有所帮助吧,也欢迎大家评论、留言。
⑵ python爬虫怎么做
⑶ python鐖铏镐庝箞锅氾纻
澶у埌钖勭被鎼灭储寮曟搸锛屽皬鍒版棩甯告暟鎹閲囬泦锛岄兘绂讳笉寮缃戠粶鐖铏銆傜埇铏镄勫熀链铡熺悊寰堢亩鍗曪纴阆嶅巻缃戠粶涓缃戦〉锛屾姄鍙栨劅鍏磋叮镄勬暟鎹鍐呭广傝繖绡囨枃绔犱细浠庨浂寮濮嬩粙缁嶅备綍缂栧啓涓涓缃戠粶鐖铏鎶揿彇鏁版嵁锛岀劧钖庝细涓姝ユラ愭笎瀹屽杽鐖铏镄勬姄鍙栧姛鑳姐
宸ュ叿瀹夎
鎴戜滑闇瑕佸畨瑁卲ython锛宲ython镄剅equests鍜孊eautifulSoup搴撱傛垜浠鐢≧equests搴撶敤鎶揿彇缃戦〉镄勫唴瀹癸纴浣跨敤BeautifulSoup搴撴潵浠庣绣椤典腑鎻愬彇鏁版嵁銆
瀹夎卲ython
杩愯宲ipinstallrequests
杩愯宲ipinstallBeautifulSoup
鎶揿彇缃戦〉
瀹屾垚蹇呰佸伐鍏峰畨瑁呭悗锛屾垜浠姝e纺寮濮嬬紪鍐欐垜浠镄勭埇铏銆傛垜浠镄勭涓涓浠诲姟鏄瑕佹姄鍙栨墍链夎眴鐡d笂镄勫浘涔︿俊鎭銆傛垜浠浠/subject/26986954/涓轰緥锛岄栧厛鐪嬬湅寮濡备綍鎶揿彇缃戦〉镄勫唴瀹广
浣跨敤python镄剅equests鎻愪緵镄刧et()鏂规硶鎴戜滑鍙浠ラ潪甯哥亩鍗旷殑銮峰彇镄勬寚瀹氱绣椤电殑鍐呭,浠g爜濡备笅锛
鎻愬彇鍐呭
鎶揿彇鍒扮绣椤电殑鍐呭瑰悗锛屾垜浠瑕佸仛镄勫氨鏄鎻愬彇鍑烘垜浠𨱍宠佺殑鍐呭广傚湪鎴戜滑镄勭涓涓渚嫔瓙涓锛屾垜浠鍙闇瑕佹彁鍙栦功钖嶃傞栧厛鎴戜滑瀵煎叆BeautifulSoup搴掳纴浣跨敤BeautifulSoup鎴戜滑鍙浠ラ潪甯哥亩鍗旷殑鎻愬彇缃戦〉镄勭壒瀹氩唴瀹广
杩炵画鎶揿彇缃戦〉
鍒扮洰鍓崭负姝锛屾垜浠宸茬粡鍙浠ユ姄鍙栧崟涓缃戦〉镄勫唴瀹逛简锛岀幇鍦ㄨ╂垜浠鐪嬬湅濡备綍鎶揿彇鏁翠釜缃戠珯镄勫唴瀹广傛垜浠鐭ラ亾缃戦〉涔嬮棿鏄阃氲繃瓒呴摼鎺ヤ簰鐩歌繛鎺ュ湪涓璧风殑锛岄氲繃阈炬帴鎴戜滑鍙浠ヨ块梾鏁翠釜缃戠粶銆傛墍浠ユ垜浠鍙浠ヤ粠姣忎釜椤甸溃鎻愬彇鍑哄寘钖鎸囧悜鍏跺畠缃戦〉镄勯摼鎺ワ纴铹跺悗閲嶅岖殑瀵规柊阈炬帴杩涜屾姄鍙栥
阃氲繃浠ヤ笂鍑犳ユ垜浠灏卞彲浠ュ啓鍑轰竴涓链铡熷嬬殑鐖铏銆傚湪鐞呜В浜嗙埇铏铡熺悊镄勫熀纭涓婏纴鎴戜滑鍙浠ヨ繘涓姝ュ圭埇铏杩涜屽畬锽勚
鍐栾繃涓涓绯诲垪鍏充簬鐖铏镄勬枃绔狅细/i6567289381185389064/銆傛劅鍏磋叮镄勫彲浠ュ墠寰镆ョ湅銆
Python锘烘湰鐜澧幂殑鎼寤猴纴鐖铏镄勫熀链铡熺悊浠ュ强鐖铏镄勫师鍨
Python鐖铏鍏ラ棬(绗1閮ㄥ垎)
濡备綍浣跨敤BeautifulSoup瀵圭绣椤靛唴瀹硅繘琛屾彁鍙
Python鐖铏鍏ラ棬(绗2閮ㄥ垎)
鐖铏杩愯屾椂鏁版嵁镄勫瓨鍌ㄦ暟鎹锛屼互SQLite鍜孧ySQL浣滀负绀轰緥
Python鐖铏鍏ラ棬(绗3閮ㄥ垎)
浣跨敤seleniumwebdriver瀵瑰姩镐佺绣椤佃繘琛屾姄鍙
Python鐖铏鍏ラ棬(绗4閮ㄥ垎)
璁ㄨ轰简濡备綍澶勭悊缃戠珯镄勫弽鐖铏绛栫暐
Python鐖铏鍏ラ棬(绗5閮ㄥ垎)
瀵笔ython镄凷crapy鐖铏妗嗘灦锅氢简浠嬬粛锛屽苟绠鍗旷殑婕旂ず浜嗗备綍鍦⊿crapy涓嬭繘琛屽紑鍙
Python鐖铏鍏ラ棬(绗6閮ㄥ垎)
⑷ 濡备綍浣跨敤nodejs锅氱埇铏绋嫔簭
鐩镙
鎶揿彇缃戠珯涓婄殑濡瑰瓙镦х墖銆
绗涓夋柟妯″潡
superagent : 绗涓夋柟Nodejs 妯″潡锛岀敤浜庡勭悊链嶅姟鍣ㄥ拰瀹㈡埛绔镄凥ttp璇锋眰銆
cheerio : 涓烘湇锷″櫒绔瀹氩埗镄凧query瀹炵幇銆
镐濊矾
阃氲繃superagent 銮峰彇鐩镙囩绣绔欑殑dom
阃氲繃cheerio瀵筪om杩涜岃В鏋愶纴銮峰缑阃氱敤甯冨眬銆
濡傛灉鍙鏄鐖鍙栦竴涓椤甸溃锛屽垯鍙浠ョ洿鎺ュ皢鐩镙囬〉闱㈢殑鐩镙囧厓绱犺幏鍙
濡傛灉鏄鍒嗛〉鎴栬呭氢釜椤甸溃锛屽彲浠ラ氲繃寰鐜銮峰缑鐩镙囬摼鎺ワ纴杩涜屽氭℃姄鍙栥
瀹炵幇
杩欓噷鎴戜滑瀹炵幇涓涓鎶揿彇缃戠珯濡瑰瓙镄勭収鐗囥
鐩镙囩绣鍧锛http://jandan.net/ooxx/ 锛埚逛簬璇ョ绣绔欙纴骞舵病链夋伓镒忔敾鍑荤殑镒忔.)
浠g爜濡备笅锛
//寮曞叆绗涓夋柟鍜岄氱敤妯″潡
varfs=require('fs');//涓轰简灏嗘姄鍙栫殑锲剧墖瀛桦埌链鍦帮纴浣跨敤fs
varsuperagent=require('superagent');//寮曞叆superagent
varcheerio=require('cheerio');//寮曞叆jquery瀹炵幇
varfilePath='/node/瀛︿範/sis/img/';//瀹氢箟鎶揿彇濡瑰瓙鏂囦欢瀛樻斁璺寰
varcount=0;//璁板綍鎶揿彇鏁伴噺
vartest=[];
//鎶揿彇涓涓椤甸溃镄勫疄鐜般
vargetOnePage=function(url){
//锲犱负镦庤泲瀵硅锋眰锅氢简闄愬埗锛屾墍浠ュ皢cookie锷犱笂浜嗐傚傛灉浣犺佽块梾璇ョ绣绔欑殑璇濓纴鍙浠ラ氲繃娴忚埚櫒镆ユ垒cookie骞惰繘琛屾浛鎹
superagent.get(url)
.set({
'user-agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/47.0.2526.111Safari/537.36'
})
.set('cookie','500322148=53;Hm_lvt_=1454117846;Hm_lpvt_=1454119909')
.set({
'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'connection':'keep-alive',
'host':'jandan.net'
})
.end(function(err,sres){//杩欓噷鏄瀵硅幏鍙栫殑dom杩涜屽勭悊
if(err)throwerr;
var$=cheerio.load(sres.text);
varnextUrl=$('.previous-comment-page').attr('href');//銮峰缑涓嬩竴椤电殑阈炬帴锛屼负浜嗗紑濮嬩笅涓娆¤锋眰
$('img').each(function(index,ele){//寰鐜璇ラ〉闱㈢殑镓链夊浘鐗囧苟寰楀埌瀵瑰簲镄勯摼鎺ワ纴鏀捐繘鏁扮粍銆
varu='';
if($(ele).attr('org_src')){
u=$(ele).attr('org_src');
}else{
u=$(ele).attr('src');
}
test.push(u);
//阃氲繃superagent銮峰彇锲剧墖鏁版嵁锛屽苟淇濆瓨鍒版湰鍦般
superagent.get(u).end(function(err,sres){
if(err)throwerr;
//镙规嵁璁块梾璺寰勮幏寰楁枃浠跺悕绉
varttt=u.split('/');
varname=ttt[ttt.length-1];
varpath=filePath+name
fs.writeFile(path,sres.body,function(){
count++;
console.log(u);
console.log('宸叉垚锷熸姄鍙..'+count+'寮');
});
});
});
if(null!=nextUrl&&''!=nextUrl){//浣曟椂寮濮嬩笅涓娆¤锋眰
getOnePage(nextUrl);
}
});
};
getOnePage('http://jandan.net/ooxx/');//瑙﹀彂绗涓娆¤锋眰寮濮
5. 缁撴灉