A. python 爬蟲如何實現cnki 的自動ip登錄
自己做個代理伺服器。例如618爬蟲代理,再指向次一級代理。或者是直接讓爬蟲通過http proxy的參數設置去先把一個代理。 代理池通常是租來的,或者是掃描出來的。掃描出來的往往大部分都不可用。 爬蟲的實現有幾百種方案。通常建議直接從SCRAPY入手。
B. python爬蟲模擬登陸網站
你可以結合使用requests和selenium這兩個python模塊來實現半自動化模擬登錄。
#-*-coding:utf-8-*-
importtime
importrequests
fromrequests.sessionsimportcookiejar_from_dict
fromseleniumimportwebdriver
LOGIN_URL='http://www.cofool.com/'
driver=webdriver.Firefox()
driver.get(LOGIN_URL)
time.sleep(30)
cookies={}
forcookieindriver.get_cookies():
cookies[cookie['name']]=cookie['value']
driver.quit()
printcookies
#cookies={}
headers={
'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64;rv:24.0)Gecko/20100101Firefox/24.0',
'Accept':'*/*',
'Connection':'keep-alive',
}
cookies=cookiejar_from_dict(cookies)
rep=requests.get('http://www2.cofool.com/stock/mainzjgp.asp',cookies=cookies,headers=headers)
printrep.text
如果解決了您的問題請採納!
如果未解決請繼續追問
C. python爬蟲登錄知乎後怎樣爬取數據
模擬登錄
很多網站,比如知乎、微博、豆瓣,都需要登錄之後,才能瀏覽某些內容。所以想要爬取這類網站,必須先模擬登錄。比較簡單的方式是利用這個網站的 cookie。cookie 相當於是一個密碼箱,裡面儲存了用戶在該網站的基本信息。在一次登錄之後,網站會記住你的信息,把它放到cookie里,方便下次自動登錄。所以,要爬取這類網站的策略是:先進行一次手動登錄,獲取cookie,然後再次登錄時,調用上一次登錄得到的cookie,實現自動登錄。
動態爬取
在爬取知乎某個問題的時候,需要將滑動滑鼠滾輪到底部,以顯示新的回答。靜態的爬取方法無法做到這一點,可以引入selenium庫來解決這一問題。selenium庫模擬人瀏覽網站、進行操作,簡單易懂。
D. python爬蟲模擬登錄是什麼意思
有些網站需要登錄後才能爬取所需要的信息,此時可以設計爬蟲進行模擬登錄,原理是利用瀏覽器cookie。
一、瀏覽器訪問伺服器的過程:
(1)瀏覽器(客戶端)向Web伺服器發出一個HTTP請求(Http request);
(2)Web伺服器收到請求,發回響應信息(Http Response);
(3)瀏覽器解析內容呈現給用戶。
二、利用Fiddler查看瀏覽器行為信息:
Http請求消息:
(1)起始行:包括請求方法、請求的資源、HTTP協議的版本號
這里GET請求沒有消息主體,因此消息頭後的空白行中沒有其他數據。
(2)消息頭:包含各種屬性
(3)消息頭結束後的空白行
(4)可選的消息體:包含數據
Http響應消息:
(1)起始行:包括HTTP協議版本,http狀態碼和狀態
(2)消息頭:包含各種屬性
(3)消息體:包含數據
可以發現,信息里不僅有帳號(email)和密碼(password),其實還有_xsrf(具體作用往後看)和remember_me(登錄界面的「記住我」)兩個值。
那麼,在python爬蟲中將這些信息同樣發送,就可以模擬登錄。
在發送的信息里出現了一個項:_xsrf,值為
這個項其實是在訪問知乎登錄網頁https://www.hu.com/#signin時,網頁發送過來的信息,在瀏覽器源碼中可見:
所以需要先從登錄網址https://www.hu.com/#signin獲取這個_xsrf的值,
並連同帳號、密碼等信息再POST到真正接收請求的http://www.hu.com/login/email網址。
(2)獲取_xsrf的值:
爬取登錄網址https://www.hu.com/#signin,從內容中獲取_xsrf的值。
正則表達式。
(3)發送請求:
xsrf = 獲取的_xsrf的值
data = {"email":"xxx","password":"xxx","_xsrf":xsrf}
login = s.post(loginURL, data = data, headers = headers)
loginURL:是真正POST到的網址,不一定等同於登錄頁面的網址;
(4)爬取登錄後的網頁:
response = s.get(getURL, cookies = login.cookies, headers = headers)
getURL:要爬取的登陸後的網頁;
login.cookies:登陸時獲取的cookie信息,存儲在login中。
(5)輸出內容:
print response.content
五、具體代碼:
[python]view plain
#-*-coding:utf-8-*-
#author:Simon
#updatetime:2016年3月17日17:35:35
#功能:爬蟲之模擬登錄,urllib和requests都用了...
importurllib
importurllib2
importrequests
importre
headers={'User-Agent':'Mozilla/5.0(WindowsNT6.2)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.12Safari/535.11'}
defget_xsrf():
firstURL="http://www.hu.com/#signin"
request=urllib2.Request(firstURL,headers=headers)
response=urllib2.urlopen(request)
content=response.read()
pattern=re.compile(r'name="_xsrf"value="(.*?)"/>',re.S)
_xsrf=re.findall(pattern,content)
return_xsrf[0]
deflogin(par1):
s=requests.session()
afterURL="https://www.hu.com/explore"#想要爬取的登錄後的頁面
loginURL="http://www.hu.com/login/email"#POST發送到的網址
login=s.post(loginURL,data=par1,headers=headers)#發送登錄信息,返回響應信息(包含cookie)
response=s.get(afterURL,cookies=login.cookies,headers=headers)#獲得登陸後的響應信息,使用之前的cookie
returnresponse.content
xsrf=get_xsrf()
print"_xsrf的值是:"+xsrf
data={"email":"xxx","password":"xxx","_xsrf":xsrf}
printlogin(data)
六、補充:
用知乎網做完試驗,發現這里好像並不需要發送_xsrf這個值。
不過有的網站在登陸時確實需要發送類似這樣的一個值,可以用上述方法。
E. 怎樣用Python設計一個爬蟲模擬登陸知乎
#!/usr/bin/envpython3
#-*-coding:utf-8-*-
'''
Required
-requests(必須)
-pillow(可選)
'''
importrequests
try:
importcookielib
except:
importhttp.cookiejarascookielib
importre
importtime
importos.path
try:
fromPILimportImage
except:
pass
#構造Requestheaders
agent='Mozilla/5.0(WindowsNT5.1;rv:33.0)Gecko/20100101Firefox/33.0'
headers={
'User-Agent':agent
}
#使用登錄cookie信息
session=requests.session()
session.cookies=cookielib.LWPCookieJar(filename='cookies')
try:
session.cookies.load(ignore_discard=True)
except:
print("Cookie未能載入")
defget_xsrf():
'''_xsrf是一個動態變化的參數'''
index_url='
#獲取登錄時需要用到的_xsrf
index_page=session.get(index_url,headers=headers)
html=index_page.text
pattern=r'name="_xsrf"value="(.*?)"'
#這里的_xsrf返回的是一個list
_xsrf=re.findall(pattern,html)
return_xsrf[0]
#獲取驗證碼
defget_captcha():
t=str(int(time.time()*1000))
captcha_url='
r=session.get(captcha_url,headers=headers)
withopen('captcha.jpg','wb')asf:
f.write(r.content)
f.close()
#用pillow的Image顯示驗證碼
#如果沒有安裝pillow到源代碼所在的目錄去找到驗證碼然後手動輸入
try:
im=Image.open('captcha.jpg')
im.show()
im.close()
except:
print(u'請到%s目錄找到captcha.jpg手動輸入'%os.path.abspath('captcha.jpg'))
captcha=input("pleaseinputthecaptcha >")
returncaptcha
defisLogin():
#通過查看用戶個人信息來判斷是否已經登錄
url="
login_code=session.get(url,allow_redirects=False).status_code
ifint(x=login_code)==200:
returnTrue
else:
returnFalse
deflogin(secret,account):
#通過輸入的用戶名判斷是否是手機號
ifre.match(r"^1d{10}$",account):
print("手機號登錄 ")
post_url='
postdata={
'_xsrf':get_xsrf(),
'password':secret,
'remember_me':'true',
'phone_num':account,
}
else:
print("郵箱登錄 ")
post_url='
postdata={
'_xsrf':get_xsrf(),
'password':secret,
'remember_me':'true',
'email':account,
}
try:
#不需要驗證碼直接登錄成功
login_page=session.post(post_url,data=postdata,headers=headers)
login_code=login_page.text
print(login_page.status)
print(login_code)
except:
#需要輸入驗證碼後才能登錄成功
postdata["captcha"]=get_captcha()
login_page=session.post(post_url,data=postdata,headers=headers)
login_code=eval(login_page.text)
print(login_code['msg'])
session.cookies.save()
try:
input=raw_input
except:
pass
if__name__=='__main__':
ifisLogin():
print('您已經登錄')
else:
account=input('請輸入你的用戶名 >')
secret=input("請輸入你的密碼 >")
login(secret,account)
F. python爬蟲模擬登陸
用requests模塊
對登錄的url把用戶名密碼post過去就可以了啊
G. 怎樣用Python設計一個爬蟲模擬登陸知乎
兩種方法:
1.帶cookielib和urllib2
import urllib2
import urllib
import cookielib
def login():
email = raw_input("請輸入用戶名:")
pwd = raw_input("請輸入密碼:") data={"email":email,"password":pwd}
post_data=urllib.urlencode(data) cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers
={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website =
raw_input('請輸入網址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print
content.read()
2.使用selenium
import selenium import webdriver
browser=webdriver.Firefox()
browser.get("Url")
browser.find_element_by_id(" ").sendkey("username")
browser.find_element_by_id(" ").sendkey("pass")
browser.find_element_by_id(" ").click()
其實我這個最簡單了,用的python3,requests, 只需要驗證一次,就會保存cookies,下次登錄使用cookies登錄。
第一步、打開首頁獲取_xref值,驗證圖片 第二步、輸入賬號密碼 第三步、看是否需要驗證、要則下載驗證碼圖片,手動輸入
第四步、判斷是否登錄成功、登錄成功後獲取頁面值。
H. python 爬蟲怎麼實現登陸
抓取網頁所有url的簡單Python爬蟲源碼,只用到了一個Python標准庫urllib模塊
I. python爬蟲的session 和cookie登錄問題。
cookie是已經登錄了,網站已經是登錄狀態模擬打開網站
session是模擬輸入用戶名密碼登錄網站
J. python爬蟲需要登錄怎麼辦
一般登錄都是post用戶登錄信息
可以用python模擬登錄並保存cookie,然後就可以抓取了