>  Q&A  >  본문

python - 如何在scrapy中带cookie访问?

简单的通过scrapy访问雪球都报错,我知道要先访问一次雪球,需要cookie信息才能真正打开连接。scrapy据说可以不用在意cookie,会自动获取cookie。我按照这个连接在middleware里已经启用cookie,http://stackoverflow.com/ques...,但为什么还是会返回404错误?搜索了几天都没找到答案。郁闷啊,求帮忙给个简单代码如何访问,谢谢了





class XueqiuSpider(scrapy.Spider):
    name = "xueqiu"
    start_urls = "https://xueqiu.com/stock/f10/finmainindex.json?symbol=SZ000001&page=1&size=1"
    headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Accept-Language": "zh-CN,zh;q=0.8",
        "Connection": "keep-alive",
        "Host": "www.zhihu.com",
        "Upgrade-Insecure-Requests": "1",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.109 Safari/537.36"
    }


    def __init__(self, url = None):
        self.user_url = url

    def start_requests(self):
        yield scrapy.Request(
            url = self.start_urls,
            headers = self.headers,
            meta = {
                'cookiejar': 1
            },
            callback = self.request_captcha
        )

    def request_captcha(self,response):
        print response

错误日志。

2017-03-04 12:42:02 [scrapy.core.engine] INFO: Spider opened
2017-03-04 12:42:02 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2017-03-04 12:42:02 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023
********Current UserAgent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6************
2017-03-04 12:42:12 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from: <200 https://xueqiu.com/robots.txt>
Set-Cookie: aliyungf_tc=AQAAAGFYbBEUVAQAPSHDc8pHhpYZKUem; Path=/; HttpOnly

2017-03-04 12:42:12 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://xueqiu.com/robots.txt> (referer: None)
********Current UserAgent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6************
2017-03-04 12:42:12 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from: <404 https://xueqiu.com/stock/f10/finmainindex.json?symbol=SZ000001&page=1&size=1>
Set-Cookie: aliyungf_tc=AQAAAPTfyyJNdQUAPSHDc8KmCkY5slST; Path=/; HttpOnly

2017-03-04 12:42:12 [scrapy.core.engine] DEBUG: Crawled (404) <GET https://xueqiu.com/stock/f10/finmainindex.json?symbol=SZ000001&page=1&size=1> (referer: None)
2017-03-04 12:42:12 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <404 https://xueqiu.com/stock/f10/finmainindex.json?symbol=SZ000001&page=1&size=1>: HTTP status code is not handled or not allowed
2017-03-04 12:42:12 [scrapy.core.engine] INFO: Closing spider (finished)
2017-03-04 12:42:12 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
高洛峰高洛峰2741일 전658

모든 응답(2)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-18 10:26:03

    다시 해봤는데.. 진짜 로그인이 필요없네요.. 너무 과한 생각이군요... 먼저 xueqiu.com에 요청하시고, 쿠키 받으신 후 API 주소를 요청하시면.. 그게 끝이에요. .

    ==============수치의 구분선==============

    제가 인증한대로 로그인이 필요합니다...

    으아악

    또한 홈페이지에서 User-Agent를 검증하였고 settings.py에서 설정이 가능하며, 물론 크롤러 파일에 직접 작성하실 수도 있습니다. 비밀번호는 암호화된 문자열 MD5입니다.
    아, 네, 한 가지 더 말씀드리자면, 제가 휴대폰으로 등록했기 때문에 form_data는 이 필드입니다. 다른 방법을 사용하는 경우에는 Chrome 도구를 사용하여 POST 요청에 어떤 매개변수가 있는지 확인하고 수정하기만 하면 됩니다. 스스로 form_data 내용은 괜찮을 것입니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 10:26:03

    하하, 덕분에 며칠간의 혼란이 해결되었습니다. 예전에는 요청으로 했었는데, 로그인도 필요 없고, 코드도 올릴 필요 없이

    으아악

    회신하다
    0
  • 취소회신하다