为什么我不能把饼干送到网站上?

2024-05-16 13:34:07 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,请原谅我的问题有一个非常明显的解决办法。我是新来的网页刮和刮。这将是我的第三个网站被废弃(如果我能找到解决以下问题的方法)。在

我要实现的目标:

将从以下网站中获取产品数据:https://www.sanalmarket.com.tr/kweb/sclist/30011-tum-meyveler

但是 产品根据您登录后选择的城市区域动态加载。在

所以我想,也许我可以用我自己的帐户登录,从请求头中抓取cookies,然后用scrapy Request发送它们。问题是,我想,网站不接受我发送的cookies。在

我也尝试了同样的程序硒。在

  1. 打开页面

  2. 已登录

  3. 选择了城市

  4. 买了饼干(也把它们和泡菜一起保存起来,等以后用在“小淘气”上,但没用)

  5. 从网站删除所有Cookie

  6. 刷新页面后发送步骤4中的cookies

网站再次不接受cookies。在

注意:由于我每天都需要刮除网站中的所有类别,所以我需要一个像scrapy这样的快速刮除解决方案。所以用硒刮擦不是我的选择。在

这里有一些日志和截图来支持我的问题。在

Request url and method

Request headers and cookie info

data preview after I logged in and choose a city(note the 'sid:1885' this is the store id that I want to scrape)

this is the output of view(response) line from scrapy

scrapy shell https://www.sanalmarket.com.tr/kweb/sclist/30011-tum-meyveler
from scrapy import Request
mycookie = {'JSESSIONID ': 'yndMqXswzQYeUw1CsLtp9A0GBI7ZZE0yI1W0zPk4u4JJxpZES8RF!-1577658491 ', 'NSC_wjq_dt_iuuq_lbohvsvn_lxfc    ': '756ca3c16479c6cdde0681fa2edb1040d4786c1c0a6b2f3116d5fc7f605b4631d4d0f199 ','_dc_gtm_UA-1547459-1  ':'1','_ga':'GA1.3.219867582.1525198968','_gat_UA-1547459-1 ':'1','_gid':'GA1.3.1499846526.1525198968','current-currency    ':'TRY','customer':'ggB2MTVRWi76tWJwj2ZvbDa896G27N3YaH','district':'ac00a4001701ce63cc30626def','first-permission-impression    ':'1','ins-gaSSId   ':'cbf3cd92-3c71-e321-30ac-b2d89dbf3826_1525528747  ','insIsUserLoggedIn    ':'1','insTotalCartAmount187    ':'194.96   ','insUserDetails   ':'%22muharrem.akkaya96%40gmail.com%22  ','insdrSV':'285','scs':'%7B%22t%22%3A1%7D  ','spUID':'15251989688268402d4dc11.7edd9701 ','total-cart-amount    ':'120.78   '}
req = Request('https://www.sanalmarket.com.tr/kweb/getProductList.do?shopCategoryId=30011',cookies = mycookie)
fetch(req)
view(response)

第一行日志

^{2}$

剩余行的日志

2018-05-05 19:19:32 [scrapy.downloadermiddlewares.cookies] DEBUG: Sending cookies to: <GET https://www.sanalmarket.com.tr/kweb/getProductList.do?shopCategoryId=30011>
Cookie: customer=ggB2MTVRWi76tWJwj2ZvbDa896G27N3YaH; insIsUserLoggedIn=1; insUserDetails=%22muharrem.akkaya96%40gmail.com%22; district=ac00a4001701ce63cc30626def; spUID=15251989688268402d4dc11.7edd9701; ins-gaSSId=cbf3cd92-3c71-e321-30ac-b2d89dbf3826_1525528747; insTotalCartAmount187=194.96; _ga=GA1.3.219867582.1525198968; JSESSIONID=yndMqXswzQYeUw1CsLtp9A0GBI7ZZE0yI1W0zPk4u4JJxpZES8RF!-1577658491; current-currency=TRY; first-permission-impression=1; insdrSV=285; _gid=GA1.3.1499846526.1525198968; _gat_UA-1547459-1=1; total-cart-amount=120.78; _dc_gtm_UA-1547459-1=1; scs=%7B%22t%22%3A1%7D; NSC_wjq_dt_iuuq_lbohvsvn_lxfc=756ca3c16479c6cdde0681fa2edb1040d4786c1c0a6b2f3116d5fc7f605b4631d4d0f199; NSC_wjq_dt_iuuq_lbohvsvn_lxfc=0933a3df2cf252c6b4bd9a5784157b04f2a0c6e4b29bff73d54a79d474fdc48e85bdc9ec; JSESSIONID=cMTfOnFTK1dPSPF2Qdi0d1EqqCXP3HW0S00BwxOwljYjaOMcAOqE!1083904106
2018-05-05 19:19:32 [scrapy.downloadermiddlewares.cookies] DEBUG: Received cookies from: <200 https://www.sanalmarket.com.tr/kweb/getProductList.do?shopCategoryId=30011>
Set-Cookie: JSESSIONID=ZvvfjByrDdrOTwmJX7QaaU0jWBv5nxKgfXvPVfvwSsCn63bkGH3m!-1577658491; path=/; HttpOnly
2018-05-05 19:19:32 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.sanalmarket.com.tr/kweb/getProductList.do?shopCategoryId=30011> (referer: None)

那么我怎样才能克服这种饼干的情况呢?在


Tags: httpscom网站requestwwwdotrscrapy
1条回答
网友
1楼 · 发布于 2024-05-16 13:34:07

cookie似乎是通过你的垃圾代码正确发送的,据我所知,问题出在你的key JSESSIONID的cookie值上。在

当我创建我自己的会话时,将我的城市设置为“AFYON Akmescit”并获得该会话ID,我得到了AFYON Akmescit的sid1885,但是当我尝试您的或任何其他损坏的会话ID(通过随机更改一个字符而损坏)时,我收到sid193。所以不知何故,city id 193是默认的,它不接受您的JSESSIONID值,而不接受cookie信息本身。在

总之,作为问题答案的另一个方面,您当然不应该在抓取时使用会话ID作为可靠的标识源,您可能还希望自动化身份验证过程。在

相关问题 更多 >