首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爬行使用php会话的网站时遇到cookie错误

爬行使用php会话的网站时遇到cookie错误
EN

Stack Overflow用户
提问于 2021-09-14 13:09:52
回答 1查看 152关注 0票数 0

我想抓取以下的页面:https://db.aa419.org/fakebankslist.php与搜索词“网站”。

我在python中使用请求包。没有尝试selenium b/c的计划--这个页面中没有javascript,我也不需要点击任何按钮。我认为请求包应该有爬行能力。

对于网站本身,我猜它使用php发送查询词。因此,我使用requests.post()创建了一个php会话,并使用response.cookies检索cookies,然后在下面的post请求中将cookies提供给站点。代码结构如下:

代码语言:javascript
复制
#crawl 1st page with search word in url
url='https://db.aa419.org/fakebankslist.php?psearch=sites&Submit=GO&psearchtype='
response = requests.post(url)
cookies= response.cookies
print(cookies)

#crawl page 2-4
for i in range(2, 5):
    url = 'https://db.aa419.org/fakebankslist.php?start={}'.format(str(1+20*(i-1)))
    response = requests.post(url, cookies=cookies)
    cookies= response.cookies #update cookie for each page
    print(cookies)

然而,它只适用于前2页。循环开始爬行第3页后,cookie变为空:.我查看了第3页的回复,发现这是一些与我的查询词“站点”无关的随机页面。

有人能解释一下这种情况是怎么回事吗?我怎么才能继续爬行下面的页面呢?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-14 14:38:27

我不确定你想从那个网站得到什么,但我会尽力帮助你。有结果的第一页可以通过这个网址获得:

https://db.aa419.org/fakebankslist.php?psearch=essa&Submit=GO&start=1

开始键的值1表示页面上的第一个结果。由于每个页面上有19个结果要查看第二页,所以需要将“1”切换到“21”:

https://db.aa419.org/fakebankslist.php?psearch=essa&Submit=GO&start=21

第二件事是,您的请求应该使用GET方法。

我检查了第3页的响应,发现这是一个随机页面,与我的查询词“站点”无关

我相信这与网站搜索引擎的破损有关。

我希望这个代码能帮上忙:

代码语言:javascript
复制
#crawl page 1-5
s = requests.Session()
for i in range(0, 5):
    url = 'https://db.aa419.org/fakebankslist.php?psearch=essa&Submit=GO start='+str(1+i*20)
    response = s.get(url)
    cookies= s.cookies #update cookie for each page
    print('For page ', i+1, 'with results from', 1+i*20, 'to', i*20+20, ', cookies are:', str(cookies))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69178419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档