Jakcy 发表于 2020-3-27 13:58:25

爬虫显示418错误

本帖最后由 一个账号 于 2020-3-27 17:09 编辑

import urllib.request
from http.cookiejar import CookieJar
import re

cookie = CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

data = {}
data= {
"form_email":"your email",
"form_password":"your password",
"source":"index_nav", #没有的话登录不成功
}
data= urllib.parse.urlencode(data).encode('utf-8')
login_url ="https://www.douban.com/stat.html?&action=login_click&platform=phone&login_click_time=1585283968929&callback=jsonp_c9mf28d1cw2nli1"
response = opener.open(login_url,data)

if response.geturl() == 'https://www.douban.com/stat.html?&action=login_click&platform=phone&login_click_time=1585283968929&callback=jsonp_c9mf28d1cw2nli1':
      html = response.read()

      imgurl = re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>', html)
      if imgurl:
            #讲图片保存至同目录
            url = urllib.urlretrieve(url,'v.jpg')
      captcha=re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>' ,html)
      if captcha:
            
            vcode = raw_input('请输入图片的验证码:')
            
            data["captcha-solution"] = vcode
            data["captcha-id"] = captcha.group(1)
            data["user_login"] = "登录"
            #提交验证码验证
            response=opener.open(login_url, data)
            ''' 登录成功跳转至首页 '''
            if response.geturl() == "http://www.douban.com/":
                print('login success ! ')

qiuyouzhi 发表于 2020-3-27 14:00:07

把headers加上试试

一个账号 发表于 2020-3-27 14:03:40

加个 headers

Hoiste 发表于 2020-3-27 14:05:55

网页检测请求头发现是代码登录的通常就会被拒绝访问,需要加上headers伪装成浏览器请求。

Jakcy 发表于 2020-3-27 14:07:35

qiuyouzhi 发表于 2020-3-27 14:00
把headers加上试试

老哥可以帮我打一下吗,我照着网上的打,还是不行

Jakcy 发表于 2020-3-27 14:08:28

一个账号 发表于 2020-3-27 14:03
加个 headers

老哥可以亲手打一下吗,新手一名

qiuyouzhi 发表于 2020-3-27 14:08:59

Jakcy 发表于 2020-3-27 14:08
老哥可以亲手打一下吗,新手一名

'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
放进data里面

Jakcy 发表于 2020-3-27 14:09:00

Hoiste 发表于 2020-3-27 14:05
网页检测请求头发现是代码登录的通常就会被拒绝访问,需要加上headers伪装成浏览器请求。

咋加呀,今天刚看完小甲鱼视频,做了作业有点懵

一个账号 发表于 2020-3-27 14:09:51

Jakcy 发表于 2020-3-27 14:09
咋加呀,今天刚看完小甲鱼视频,做了作业有点懵

你还在用 Python2 ?

Hoiste 发表于 2020-3-27 14:17:27

豆瓣网的话确实是需要请求头的,你看下小甲鱼零基础里面爬虫隐藏那节内容吧,其实就几行代码,课程中就有一些解释了。

Jakcy 发表于 2020-3-27 16:51:14

一个账号 发表于 2020-3-27 14:09
你还在用 Python2 ?

不是呀,

一个账号 发表于 2020-3-27 16:51:39

Jakcy 发表于 2020-3-27 16:51
不是呀,

只有 Python2 才有 raw_input

Jakcy 发表于 2020-3-27 16:58:05

qiuyouzhi 发表于 2020-3-27 14:08
放进data里面

data = {}
data['form_email'] = '你的账号'
data['form_password'] = '你的密码'
data['source'] = 'index_nav'
data['User-Agent']: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36 Maxthon/5.2.7.5000'
放了还是不行

Jakcy 发表于 2020-3-27 16:59:49

一个账号 发表于 2020-3-27 16:51
只有 Python2 才有 raw_input

这是复制小甲鱼的一段代码。
老哥,想问一下 ,我加进去了还是行
data = {}
data['form_email'] = '你的账号'
data['form_password'] = '你的密码'
data['source'] = 'index_nav'
data['User-Agent']: 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36 Maxthon/5.2.7.5000'

Jakcy 发表于 2020-3-27 17:00:26

Hoiste 发表于 2020-3-27 14:17
豆瓣网的话确实是需要请求头的,你看下小甲鱼零基础里面爬虫隐藏那节内容吧,其实就几行代码,课程中就有一 ...

十分感谢!

Jakcy 发表于 2020-3-27 17:06:12

一个账号 发表于 2020-3-27 17:01
不是加到 data 里面,是加到 headers 里面

加进去还是不行。
页: [1]
查看完整版本: 爬虫显示418错误