python - 为什么请求不适用于特定的 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)
不知道发生了什么(这对我来说是第一次),但我可能会遗漏一些明显的东西。如果有人可以解释为什么这不起作用?或者如果它在你的机器上工作,请告诉我!
解决方案
该页面会在您第一次访问时尝试添加 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)
推荐阅读
- makefile - 为什么`make logs`不运行命令?
- html - 唯一的 CSS 解决方案:在溢出隐藏元素中隐藏元素,该元素部分位于另一个固定元素后面
- google-bigquery - Dialogflow 与 BigQuery 的集成 - 将整数参数传递给 BQ
- android - 单击时如何更改textInputlayout的颜色
- java - Java中的运行时多态性以访问已被再次覆盖的覆盖方法
- mysql - 显示每个唯一 ID 的所有重复最大值
- html - 将文本文件的 html 输入下载到 C 驱动器本地文件夹
- android - 根据日期与 2 个不同的 pojo 合并的排序列表
- python - 材料检测
- java - 为什么长的写着L