csv.writer.writerow() 一次寫入一行,你只需要把 wordcount 、文章數(shù)、點擊量 一同寫入便可。
像這樣
writer.writerow([1, 30, 1000])
前端直接帶上用戶名, 密碼等參數(shù)向后臺發(fā)請求, 怕密碼安全問題就上https或約定好加解密方式, 后端嚴驗證用戶名和密碼匹配后, 將用戶信息存到session里面, response帶上session_id給前端設置cookie就完了.
不知道是不是你想要的
真正的端口是頁面加載完用 js 替換的。審查頁面元素有個加密的 mian.js :
eval(function (p, a, c, k, e, d) { e = function (c) { return (c < a ? "" : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) d[e(c)] = k[c] || e(c); k = [function (e) { return d[e] }]; e = function () { return '\\w+' }; c = 1; }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p; }('$(e(){$(\'\\f\\3\\g\\8\\1\\r\\p\\g\\k\')["\\4\\2\\q\\o"](e(u,h){5 7=$(h);5 j=7["\\i\\2\\1\\2"](\'\\a\\3\');5 9=l["\\3\\2\\8\\d\\4\\m\\b\\1"](7["\\i\\2\\1\\2"](\'\\a\'));5 c=j["\\d\\3\\n\\a\\1"](\'\\f\');t(5 6=0;6<c["\\n\\4\\b\\s\\1\\o"];6++){9-=l["\\3\\2\\8\\d\\4\\m\\b\\1"](c[6])}7["\\1\\4\\k\\1"](9)})})', 31, 31, '|x74|x61|x70|x65|var|d7|ClpoEy3|x72|TO5|x69|x6e|tVF6|x73|function|x2e|x6f|fnDKXroKU2|x64|jgemfCG4|x78|window|x49|x6c|x68|x62|x63|x2d|x67|for|wssP1'.split('|'), 0, {}))
在線解密一下得到:
$(function()
{
$('\x2e\x70\x6f\x72\x74\x2d\x62\x6f\x78')["\x65\x61\x63\x68"](function(wssP1,fnDKXroKU2)
{
var ClpoEy3=$(fnDKXroKU2);
var jgemfCG4=ClpoEy3["\x64\x61\x74\x61"]('\x69\x70');
var TO5=window["\x70\x61\x72\x73\x65\x49\x6e\x74"](ClpoEy3["\x64\x61\x74\x61"]('\x69'));
var tVF6=jgemfCG4["\x73\x70\x6c\x69\x74"]('\x2e');
for(var d7=0;
d7<tVF6["\x6c\x65\x6e\x67\x74\x68"];
d7++)
{
TO5-=window["\x70\x61\x72\x73\x65\x49\x6e\x74"](tVF6[d7])
}
ClpoEy3["\x74\x65\x78\x74"](TO5)
}
)
}
)
十六進制轉為字符串之后得到:
$(function() {
$('.port-box')["each"](function(wssP1, fnDKXroKU2) {
var ClpoEy3 = $(fnDKXroKU2);
var jgemfCG4 = ClpoEy3["data"]('ip');
var TO5 = window["parseInt"](ClpoEy3["data"]('i'));
var tVF6 = jgemfCG4["split"]('.');
for (var d7 = 0; d7 < tVF6["length"]; d7++) {
TO5 -= window["parseInt"](tVF6[d7])
}
ClpoEy3["text"](TO5)
})
})
從代碼可以看出,真實的端口是 .prot-box 里 data-ip 屬性值 減去 ip 的四位數(shù)之和
你爬這個網(wǎng)站怎么實現(xiàn)翻頁的繼續(xù)爬的?
看情況是沒有安裝urllib3,可以先使用pip安裝了urllib3。
你的編譯器的問題?
OS 10.11.6 python2.7 python3.6均正常,內(nèi)存無泄漏,你在終端里運行看看,我估計是你的編譯器的問題
def garbage():
task1 = {}
task = {'action': 'test', 'args': task1}
task1['args'] = task
# garbage寫成這樣才會出現(xiàn)314m內(nèi)存,內(nèi)存泄漏
代理連接授權出錯,再多檢查試錯下。
Caused by ProxyError('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required'
pip install bs4
pip install lxml
import re
import requests
from bs4 import BeautifulSoup
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
'Referer': 'http://cq.jiaoyubao.cn/',
'Host': 'cq.jiaoyubao.cn',
'Upgrade-Insecure-Requests': '1',
}
r = requests.get('http://cq.jiaoyubao.cn/cn/xiaoxue/', headers=headers)
soup = BeautifulSoup(r.content, 'lxml')
print(soup.prettify())
單單看控制臺的錯誤信息的話,應該是頁面中用到了textContent這個字段,但是這個字段的值為null,可以看下接口響應參數(shù)中textContent字段是否有值,或者查看一下頁面中用到textContent的地方,做下非空判斷
Python2
版本里的/
運算結果取整數(shù),例如:
5 / 2 = 2;
2 / 3 = 0;
到了Python3
里就變了;
5 / 2 = 2.5;
2 / 3 = 0.66...;
再有就是Python2
和Python3
兩個版本有些地方差別還是比較大的,兩個版本不是兼容的,使用時注意區(qū)分Python
的版本;
這是我的 pyblog 項目里的 models.py —— 希望對你有用
https://github.com/eastossifrage/pyblog/blob/master/app/models.py
請?zhí)貏e關注對 articles 類的定義,建議你把想要查詢的內(nèi)容,直接做成為某個類的屬性,記得前面加上裝飾器 @property
。
為何要用正則進行匹配替換,如果是整個HTML文檔,那么你可以借用 beautifulsoup 進行解析后,批量修改。
換 IP 已經(jīng)超出 selenium 的范圍,常見的手法如重新?lián)芴枴⒏鼡Q代理服務器等等。
可能有反爬蟲手段,selenium還是有些特征的,比如全局對象中會有一些特殊屬性。
我發(fā)現(xiàn)flask-appbuilder的API URL其實是由sqlalchemy導出的,專為其后臺網(wǎng)頁的AJAX目的而設計。所以不完全符合RESTFul的架構。而flask-restful則是根據(jù)RESTFul而設計導出的,其路徑可以有用戶自定義。
一般來說,針對Web、Mobile、前端的API,還是有所差異的。差異在于Web是固定IP的,而Mobile和瀏覽器前端IP不定,甚至是隱藏IP。這導致三者間鎖定和鑒權方式不一致。Web鎖定domain/IP,瀏覽器鎖定Referrer,Mobile無法鎖定。此外,對于apiKey/apiSecret/nouce/signature/TLS,以及登陸用戶的username/password等信息都通過session/cookie進行保存。
<iframe height="500px" width="100%" src="https://www.baidu.com" frameborder="0"></iframe>
openssl s_client -connect example.com:443
<VirtualHost [ip address]:443> 改成 <VirtualHost *:443>
更詳細的參看: https://stackoverflow.com/que...
intersect
函數(shù)的作用是"找出交集", 交集的元素是在每個集合都出現(xiàn)的元素, 如果元素a在集合A1中不存在, 那么它就肯定不在交集中, 沒必要去檢查剩下的集合A2, A3... 所以第一輪以1去檢查[2, 8, 16, 32, 64, 128]
, 發(fā)現(xiàn) 1 not in a[1]
那么不需要去檢查 a[2]了, 就break
, 接著用2去檢查.
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。