Python 使用scrapy和pyquery登录到Stackoverflow,但无法执行进一步的刮取

Python 使用scrapy和pyquery登录到Stackoverflow,但无法执行进一步的刮取,python,scrapy,stackexchange,Python,Scrapy,Stackexchange,我目前正在学习使用scrapy进行网页抓取,并尝试/学习各种方法登录stackoverflow,然后提取一些问题用于练习网页抓取。我已使用以下代码使用scrapy和pyquery成功登录stackoverflow: import scrapy import requests import getpass from pyquery import PyQuery from scrapy import FormRequest from scrapy.utils.response import open

我目前正在学习使用scrapy进行网页抓取,并尝试/学习各种方法登录stackoverflow,然后提取一些问题用于练习网页抓取。我已使用以下代码使用scrapy和pyquery成功登录stackoverflow:

import scrapy
import requests
import getpass
from pyquery import PyQuery
from scrapy import FormRequest
from scrapy.utils.response import open_in_browser


class QuoteSpider(scrapy.Spider):
    name = 'stackoverflow'
    start_urls = ['https://stackoverflow.com/users/login']
    
    # def login_page(self):
    # Fetch the fkey
    login_page = requests.get(start_urls[0]).text
    pq = PyQuery(login_page)
    fkey = pq('input[name="fkey"]').val()

    # Prompt for email and password
    email = input("Email: ")
    password = getpass.getpass()

    # Login
    response = requests.post(
        start_urls[0],
        data = {
            'email': email,
            'password': password,
            'fkey': fkey
        })
    print(response)

    def parse(self, response):
        open_in_browser(response)
        
    def get_questions_link(self):
        pass
但作为响应,它仅使用以下命令运行,给我成功状态代码,即200:

scrapy crawl stackoverflow -L WARN
Email: test@gmail.com
Password: 
<Response [200]>
scrapy crawl堆栈溢出-L警告
电邮:test@gmail.com
密码:

那么,我怎样才能得到整个html页面数据的响应,这样我就可以获得更多的问题/数据。解析函数也在工作,但它只是打开stackoverflow登录页面。

看起来您正在使用请求库来完成最后的POST请求。从
requests.post()返回的响应将以多种方式提供响应的主体。请参阅:。您应该通过
response.status\u code
检查响应代码的2XX值。一个快捷方式是只需检查
response.ok
。完成此操作后,可以将响应正文作为文本:

response.text
如果您希望返回一个网页(HTML),那么这就是您想要的

如果返回JSON,则可以通过以下方式从该JSON扩展生成的数据结构:

response.json

如果您不确定将返回什么内容,请检查
内容类型
标题值。

看起来您正在使用请求库处理您正在发出的最终POST请求。从
requests.post()返回的响应将以多种方式提供响应的主体。请参阅:。您应该通过
response.status\u code
检查响应代码的2XX值。一个快捷方式是只需检查
response.ok
。完成此操作后,可以将响应正文作为文本:

response.text
如果您希望返回一个网页(HTML),那么这就是您想要的

如果返回JSON,则可以通过以下方式从该JSON扩展生成的数据结构:

response.json
如果您不确定将返回什么,请检查
内容类型
标题值