请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我在debug的时候 停止了 ,求助!!

-- coding: utf-8 --

import re
import scrapy
import json

try:
import urlparse as parse #python 2
except:
from urllib import parse #python 3 兼容的方式 2 不行就3

class ZhihuSpider(scrapy.Spider):
name = 'zhihu’
allowed_domains = [‘www.zhihu.com’]
start_urls = [‘http://www.zhihu.com/’]

headers = {
    "HOST": "www.zhihu.com",
    "Referer": "https://www.zhizhu.com",
    'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:51.0) Gecko/20100101 Firefox/51.0"
}

def parse(self, response):
    """
    提取html页面的所有url,并根据这些url进一步爬取
    如果提取的url格式为/question/xxx 就下载之后直接进入解析函数
    """
    all_urls = response.css("a::attr(href)").extract()
    all_urls = [parse.urljoin(response.url, url) for url in all_urls]
    for url in all_urls:
        pass


def parse_detail(self, response):
    pass

def start_requests(self):
    return [scrapy.Request('https://www.zhihu.com/signup?next=%2F', headers=self.headers, callback=self.login)]  #指定回调函数,不然就会默认回到上面的pass
    #这个逻辑也就是说首先从登录页面获取数据


def login(self, response):
    response_text = response.text
    match_obj = re.match('.*name="_xsrf" value="(.*?)"', response_text, re.DOTALL)
    xsrf = ''
    if match_obj:
        xsrf = (match_obj.group(1))

    if xsrf:
        post_url = "https://www.zhihu.com/login/phone_num"
        post_data = {
            "_xsrf": xsrf,
            "phone_num": "15166791288",
            "password": "yang97221949",
            #"captcha": get_captcha()
        }
        return [scrapy.FormRequest(      #formrequet可以完成表单提交
            url= post_url,
            formdata= post_data,
            headers=self.headers,
            callback=self.check_login   #不加括号,只调用函数名称 获取值
        )]
def check_login(self, respone):
    #验证服务器的返回数据判断是否成功
    text_json = json.loads(respone.text)
    if "msg" in text_json and text_json["msg"] == "登录成功":
        for url in self.start_urls:
            yield scrapy.Request(url, dont_filter=True, headers=self.headers)

控制台出现
图片描述
图片描述

正在回答

1回答

你这里模拟登录成功了吗? 知乎的最新的登录方式 我已经补录了视频 交给慕课网了 这几天会上线 你关注一下

0 回复 有任何疑惑可以回复我~
  • 提问者 帅气的小跳蛙 #1
    我刚刚学了第8章 用selenium登录成功了,但不知道怎么继续执行zhihu.py这个文件的爬虫项目,这种衔接我不清楚,老师帮忙解答一下,谢谢!
    回复 有任何疑惑可以回复我~ 2019-03-09 10:03:41
  • bobby 回复 提问者 帅气的小跳蛙 #2
    知乎的模拟登录 我已经补录了视频 交给慕课网了 这两天就会上线
    回复 有任何疑惑可以回复我~ 2019-03-10 13:15:55
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信