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,然后就可以抓取了