整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          數(shù)據(jù)采集代碼實戰(zhàn)

          .python http請求模塊

          1.1 python http請求常識介紹

          首先要清楚http協(xié)議信息包含:uri、body和headers等部分;http請求方式有以下幾種:

          • Get
          • Post
          • Put
          • Delete
          • Head
          • Patch
          • Options
          • Propfind
          • Copy
          • Move

          常見的http請求有:get、post和head;在python常用的http網(wǎng)絡(luò)請求模塊隨著python版本的不同,大致如下所示:

          • python2.X 有這些庫名可用: urllib, urllib2, urllib3, httplib, httplib2, requests。
          • python3.X 有這些庫名可用: urllib, urllib3, httplib2, requests。

          兩者都有的urllib3和requests, 它們不是標(biāo)準(zhǔn)庫. urllib3 提供線程安全連接池和文件post支持,與urllib及urllib2的關(guān)系不大. requests 自稱HTTP for Humans, 使用更簡潔方便。

          在這里我們只講解python2.X的http網(wǎng)絡(luò)請求模塊。

          • Urllib和urllib2的區(qū)別:
            • urllib2可以接受Request對象為URL設(shè)置頭信息,修改用戶代理,設(shè)置cookie等, urllib只能接受一個普通的URL。
            • urllib提供一些比較原始基礎(chǔ)的方法而urllib2沒有這些, 比如 urlencode。
          • httplib 和 httplib2的區(qū)別:
            • httplib 是http客戶端協(xié)議的實現(xiàn),通常不直接使用, urllib是以httplib為基礎(chǔ) ;httplib2 是第三方庫, 比httplib有更多特性。


          1.2 http請求經(jīng)驗

          經(jīng)驗具體如下所示:

          • 合理使用gzip,使發(fā)送的請求可以更快的響應(yīng)。
          • requests 是一款非常人性化的 python http 庫,但起對網(wǎng)頁的編碼識別卻一直很蛋疼,時常出現(xiàn)亂碼??梢詮墓俜降?API 文檔中找出亂碼的根本原因;可見,requests 是通過 http header 猜測頁面編碼,如果 header 中不存在charset 就認(rèn)為編碼為 ISO-8859-1。這樣的話,對于返回頭中沒有指定頁面編碼的情況,自然就出現(xiàn)亂碼了。通常的解決辦法如下所示:

          1.3 cookie的使用

          在網(wǎng)絡(luò)請求中cookie的使用是個很重要的方面,其中保存記錄重要請求行為的cookie,可以將使用的cookie保存到本地,可以從本地加載需要的cookie。

          創(chuàng)建cookielib.CookieJar對象自動管理Cookie稍繁瑣一些,但是一旦創(chuàng)建,可供urllib2創(chuàng)建opener,后續(xù)的所有cookie更新和過期刪除都是自動處理的。


          可用網(wǎng)址:

          • http://www.lijiejie.com/python-http-request-with-cookie-string-part-2/ 其中例子的作用和模擬登陸一樣
          • http://cuiqingcai.com/968.html 介紹python cookie的使用
          • http://www.jb51.net/article/46499.htm 介紹python cookie的使用,側(cè)重點介紹cookie
          • http://www.lijiejie.com/python-http-request-with-cookie-string/

          1.4 其它http請求模塊

          可用的其它python http請求模塊:

          u frequests

          u grequests

          其中frequests和grequests的使用方式相同,其中frequests的穩(wěn)定性高于grequests;簡單使用如下所示:

          2.響應(yīng)結(jié)果數(shù)據(jù)格式

          一般常見的響應(yīng)結(jié)果格式為:

          • json數(shù)據(jù)
          • html數(shù)據(jù)
          • 純文本

          3.各種數(shù)據(jù)格式的解析方法

          3.1 Html解析方法

          常見的html數(shù)據(jù)解析方法為:

          • XPATH選擇器
          • CSS選擇器
          • 正則表達(dá)式

          3.2 純文本解析方法

          常見的純文本解析方法為:

          • 正則表達(dá)式
          • Python字符串處理,index、find、split、join等函數(shù)

          3.3網(wǎng)頁正文提取

          網(wǎng)頁正文提取重要性:

          • 對于Web信息檢索來說,網(wǎng)頁正文抽取是后續(xù)處理的關(guān)鍵。

          正則表達(dá)式可以準(zhǔn)確的抽取某一固定格式的頁面,但面對形形色色的HTML,使用規(guī)則處理難免捉襟見肘。能不能高效、準(zhǔn)確的將一個頁面的正文抽取出來,并做到在大規(guī)模網(wǎng)頁范圍內(nèi)通用,這是一個直接關(guān)系上層應(yīng)用的難題。

          調(diào)研的方案:

          • Joyhtml

          JoyHTML的目的是解析HTML文本當(dāng)中的鏈接和正文,利用超鏈接密度法為主要判斷依據(jù)的標(biāo)記窗算法,采用DOM樹解析模式。

          • Boilerpipe

          這個Java類庫提供算法來探測和刪除在一個網(wǎng)頁中主文本內(nèi)容旁多余的重復(fù)內(nèi)容。它已經(jīng)有提供特殊的策略來處理一些常用的功能如:新聞文章提取。

          • cx-extractor

          本算法首次將網(wǎng)頁正文抽取問題轉(zhuǎn)化為求頁面的行塊分布函數(shù),并完全脫離HTML標(biāo)簽。通過線性時間建立行塊分布函數(shù)圖,由此圖可以直接高效、準(zhǔn)確的定位網(wǎng)頁正文。同時采用統(tǒng)計與規(guī)則相結(jié)合的方法來解決系統(tǒng)的通用性問題。

          • Readability

          在這里我們只使用其中cx-extractor和readability;這里對cx-extractor和readability做個對比,如下所示:

          • cx-extractor優(yōu)于readability(自己也在實際任務(wù)中驗證過)。
            • 簡單:java代碼不超過400行
            • 準(zhǔn)確率高:> 95%
            • 算法時間復(fù)雜度為線性

          cx-extractor使用實例如下圖所示:

          cx-extractor與readability的對比


          4.數(shù)據(jù)解析細(xì)節(jié)

          建議:

          • 使用xpath或者css selector替代正則
          • 為什么建議使用xpath代替正則?
            • 對于固定場景,合適的正則表達(dá)式解析的效率是會高于xpath的,之所以提倡使用xpath,是因為程序可維護(hù)性,xpath的可讀性遠(yuǎn)高于正則表達(dá)式,開發(fā)調(diào)試和維護(hù)效率會大大提高。

          果CMS作為優(yōu)秀的內(nèi)容管理系統(tǒng),因其具備強(qiáng)大的采集功能,使客戶可以輕松提取網(wǎng)絡(luò)信息并展示。然而,在采集過程中,原創(chuàng)性尤須重視。文章將剖析利用該CMS進(jìn)行采集時,如何實現(xiàn)偽原創(chuàng),從而保持采集內(nèi)容的獨特性與高品質(zhì)。

          理解蘋果CMS采集原理

          成功實現(xiàn)偽原創(chuàng)的關(guān)鍵在于對蘋果CMS采集原理有透徹了解。蘋果CMS采集功能通過獲取特定網(wǎng)頁的HTML代碼,抽取出諸如標(biāo)題、正文等關(guān)鍵元素,接著按照用戶預(yù)設(shè)規(guī)則進(jìn)行相關(guān)處理,以生成最終的內(nèi)容。為了實現(xiàn)偽原創(chuàng),在處理階段需添加一些元素,使采集所得內(nèi)容具備一定程度的創(chuàng)新性。

          實際運用中,可借助調(diào)整采集規(guī)范和添加處理組件等策略以實現(xiàn)偽原創(chuàng)效果。例如,可以選擇性地對原文進(jìn)行局部置換和添加關(guān)鍵字鏈接,進(jìn)而使生成的文本更具新穎性。

          修改采集規(guī)則

          蘋果CMS的采擷規(guī)則直接影響內(nèi)容的構(gòu)架及格式,適當(dāng)調(diào)整其參數(shù)便能產(chǎn)生類似原創(chuàng)的結(jié)果。譬如,增加一定的隨機(jī)置換規(guī)則至規(guī)則庫內(nèi),使每次所采擷之內(nèi)容皆異于前次,即便源頭無二,所得之文亦呈現(xiàn)豐富多元,從而提升文章的原創(chuàng)度。

          此外,利用調(diào)整采集規(guī)則如部署設(shè)定采集頻率及挑選合適的采集源等方法可有效降低與其他網(wǎng)站發(fā)生的內(nèi)容重復(fù)現(xiàn)象,進(jìn)一步提高網(wǎng)站信息的獨有特性。

          使用內(nèi)容處理插件

          除了調(diào)整采集規(guī)則之外,通過運用蘋果CMS豐富的插件庫,可實現(xiàn)高質(zhì)量的文章生成。使用者可按照自身需求選用適當(dāng)插件并完成相應(yīng)設(shè)置以滿足不同需求。

          運用諸如內(nèi)容自動替換等插件,即可對采集信息作出相應(yīng)處理,將特定詞匯或語句轉(zhuǎn)化為同義詞或等價表達(dá)方式,進(jìn)而提升內(nèi)容的多樣化;同時,借助關(guān)鍵詞鏈接插件,能在采集內(nèi)容中自動添加上相應(yīng)關(guān)鍵詞鏈接,大幅度增強(qiáng)內(nèi)容的豐富程度與可讀性。

          結(jié)合人工編輯

          雖然借助蘋果CMS的自動采集與處理能力可在一定程度上實現(xiàn)偽原創(chuàng)效果,然而若期望獲得更高原創(chuàng)性,仍需借助人工編輯的專業(yè)技能。通過對采集而來的素材加以精細(xì)化處理及潤色,增加個人鮮明觀點及魅力內(nèi)容,從而使最終呈現(xiàn)出的文章更具特色和吸引力。

          在人工編修過程中,遵循采集內(nèi)容的主題與風(fēng)格,適度調(diào)整以確保內(nèi)容連貫性與一致性。另外,適量植入獨特元素及表達(dá)手法,賦予文章更多個性與創(chuàng)意。

          不斷優(yōu)化和調(diào)整

          塑造偽原創(chuàng)并非一日之功,需持續(xù)優(yōu)化與調(diào)整。實踐中,用戶可通過精細(xì)化管理采集規(guī)則及運用內(nèi)容處理插件等手段,以滿足自身及用戶的需求偏好。

          通過利用蘋果CMS所提供的數(shù)據(jù)分析能力,我們能精準(zhǔn)評估并分析演化出的內(nèi)容,全面掌握用戶的反饋及偏好,據(jù)此適時調(diào)整收集策略以及內(nèi)容處理模式,以持續(xù)提高內(nèi)容的品質(zhì)與創(chuàng)新度。

          面臨的挑戰(zhàn)與解決方案

          在執(zhí)行假擬原創(chuàng)的任務(wù)時,面臨了一系列挑戰(zhàn)與難題。例如,如何保證偽原創(chuàng)內(nèi)容的自然流暢以及可閱讀性;如何防止過度編輯造成的文章信息失實等等問題。

          為了應(yīng)對上述困難,高效可行之策略包括運用AI技術(shù)進(jìn)行自然語言處理,確保內(nèi)容的自然流暢與易讀;此外,也應(yīng)強(qiáng)化采編源頭的篩選與評估機(jī)制,精選優(yōu)質(zhì)資源加以收集,從根本上保障內(nèi)容品質(zhì)及原創(chuàng)性。

          總結(jié)

          對蘋果CMS采集與偽原創(chuàng)的研究表明,偽原創(chuàng)并非難事,只需掌握相應(yīng)策略及技能便可勝任。關(guān)鍵在于了解采集機(jī)理,精確設(shè)置采集規(guī)則,利用內(nèi)容處理插件,輔以人工編輯及持續(xù)改善,以提升文章質(zhì)量與獨特性。堅信在不久未來,我們將更易于創(chuàng)造出高品質(zhì)的偽原創(chuàng)內(nèi)容,以滿足用戶對于優(yōu)質(zhì)內(nèi)容服務(wù)需求。

          關(guān)于此議題,我邀請您參與思考:您如何看待偽原創(chuàng)對內(nèi)容創(chuàng)新所產(chǎn)生的影響?期待您的寶貴意見!

          coding=utf-8

          import urllib2

          import re

          import os

          #this function from internet @littlebai

          #去掉特征字符串內(nèi)的html操作符

          def filter_tags(htmlstr):

          re_cdata=re.compile('//<!\[CDATA\[[^>]*//\]\]>',re.I) #匹配CDATA

          re_script=re.compile('<\s*script[^>]*>[^<]*<\s*/\s*script\s*>',re.I)#Script

          re_style=re.compile('<\s*style[^>]*>[^<]*<\s*/\s*style\s*>',re.I)#style

          re_p=re.compile('<P\s*?/?>')#處理換行

          re_h=re.compile('</?\w+[^>]*>')#HTML標(biāo)簽

          re_comment=re.compile('<!--[^>]*-->')#HTML注釋

          s=re_cdata.sub('',htmlstr)#去掉CDATA

          s=re_script.sub('',s) #去掉SCRIPT

          s=re_style.sub('',s)#去掉style

          s=re_p.sub('\r\n',s)#將<p>轉(zhuǎn)換為換行

          s=re_h.sub('',s) #去掉HTML 標(biāo)簽

          s=re_comment.sub('',s)#去掉HTML注釋

          blank_line=re.compile('\n+')#去掉多余的空行

          s=blank_line.sub('\n',s)

          return s

          #設(shè)置下載文件的保存位置

          path = "E:\news.qq.com\a\20120506\"

          #匹配url規(guī)則

          rege = re.compile(r"/a/\d{8}/\d{6}.htm")

          #從主頁獲得所有存在的url鏈接的后半部分并排序

          urlcontent = urllib2.urlopen('http://news.qq.com/a/20120506/index.htm').read()

          get_url = rege.findall(urlcontent)

          get_url.sort()

          #根據(jù)所獲得的url數(shù)量建立循環(huán)遍歷所有url鏈接

          for i in xrange(0,len(get_url)):

          get_url[i] = "http://news.qq.com"+get_url[i]#完整鏈接

          #異常處理:部分url鏈接打開延時或者無法打開則跳過此次循環(huán)

          try:#異常跳出

          sub_web = urllib2.urlopen(get_url[i]).read()#打開完整url鏈接,獲取內(nèi)容

          except urllib2.URLError, e:

          print get_url[i][-10:-4]+' Failed'

          continue

          #下面開始內(nèi)容操作

          re_keyt = "<h1>.+</h1>"#獲取標(biāo)題,此處的標(biāo)題不含騰訊新聞的后綴比較方便

          title = re.findall(re_keyt,sub_web)#去掉標(biāo)題左右的html標(biāo)簽

          re_keyc = re.compile("<div id=\"Cnt-Main-Article-QQ\".*</P></div>\n</div>",re.DOTALL)#匹配正文內(nèi)容的正則(個別頁面無法獲得,見if塊)

          content = re_keyc.findall(sub_web)#獲得正文內(nèi)容

          #個別頁面由于有視頻或其他的無法匹配正文內(nèi)容的正則表達(dá)式,所以無法獲得內(nèi)容,應(yīng)給與過濾

          if len(title)==0 or len(content)==0:

          continue

          re_content = filter_tags(title[0]+"\r\n"+content[0])#將標(biāo)題和正文放到一起并去除html標(biāo)簽代碼

          w=file(path+get_url[i][-10:-4]+'.txt','w')#根據(jù)頁面的文件名建立txt文件,并打開為寫入方式

          w.write(re_content)#寫入獲得的去除了html標(biāo)簽代碼的標(biāo)題和正文

          w.close()#關(guān)閉文件

          #命令行輸出提示文件下載進(jìn)度

          print 'Completed the'+str(i+1)+" -Total "+str(len(get_url))+" THE "+get_url[i][-10:]

          #完成所有url鏈接的下載

          print "Fuck The Stupied Guy!!!!"

          #退出腳本

          exit()


          主站蜘蛛池模板: 成人免费区一区二区三区| 久久久人妻精品无码一区| 国产一区二区三区高清在线观看 | 中文字幕色AV一区二区三区| 成人精品视频一区二区三区尤物| 2021国产精品视频一区| 亚洲av午夜福利精品一区人妖| 久久精品免费一区二区| 精品久久一区二区| 一区视频免费观看| 精品一区二区三区在线观看l | 射精专区一区二区朝鲜| 成人精品一区久久久久| 国产精品综合AV一区二区国产馆| 国产在线精品一区二区高清不卡| 免费一区二区三区四区五区| 久久精品无码一区二区三区免费 | 成人在线视频一区| 国产亚洲3p无码一区二区| 亚洲av成人一区二区三区| 国产suv精品一区二区6| 无码人妻一区二区三区免费n鬼沢| 亚洲一区二区无码偷拍| 精品亚洲一区二区三区在线播放| 99在线精品一区二区三区| 国产精品免费一区二区三区| 日韩中文字幕一区| 无码人妻一区二区三区免费手机| 日本高清无卡码一区二区久久| 午夜在线视频一区二区三区| 怡红院美国分院一区二区| 中日韩精品无码一区二区三区| 国产成人精品日本亚洲专一区| 无码人妻精品一区二区三区久久 | 在线精品亚洲一区二区三区| 国产成人片视频一区二区| 国产成人精品a视频一区| 国产精品女同一区二区久久| 中日av乱码一区二区三区乱码| 国产午夜精品一区理论片飘花| 亚洲日韩精品无码一区二区三区|