首页 > 解决方案 > 为什么请求不适用于特定的 URL?

问题描述

我有一个问题:Python 中的请求模块。

到目前为止,我一直在使用它进行刮擦,并且效果很好。

但是,当我针对一个特定网站(下面的代码 - 并参考 Jupyter Notebook 快照)执行此操作时,它只是不想完成任务(永远显示 [*])。

from bs4 import BeautifulSoup
import requests
import pandas as pd
import json

page = requests.get('https://www.stoneisland.com/ca/stone-island-shadow-project/coats-jackets', verify = False)

soup = BeautifulSoup(page.content, 'html.parser')

一些用户还建议使用如下标题来加快速度,但它对我也不起作用:

url = 'https://www.stoneisland.com/ca/stone-island-shadow-project/coats-jackets'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}

req = requests.get(url = url, headers = headers)

不知道发生了什么(这对我来说是第一次),但我可能会遗漏一些明显的东西。如果有人可以解释为什么这不起作用?或者如果它在你的机器上工作,请告诉我!

奇怪的请求

标签: pythonparsingweb-scrapingbeautifulsouppython-requests

解决方案


该页面会在您第一次访问时尝试添​​加 cookie。通过使用 requests 模块而不定义 cookie 将阻止您连接到页面。

我已经修改了您的脚本以包含我的 cookie,它应该可以工作 - 如果没有,请将您的 cookie(对于此主机域)从浏览器复制到脚本。

url = 'https://www.stoneisland.com/ca/stone-island-shadow-project/coats-jackets'

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.3'}

cookies = {
    'TS01e58ec0': '01a1c9e334eb0b8b191d36d0da302b2bca8927a0ffd2565884aff3ce69db2486850b7fb8e283001c711cc882a8d1f749838ff59d3d'
}

req = requests.get(url = url, headers = headers, cookies=cookies)

推荐阅读