以前,我想我是在丛林中跳舞,因为我不清楚使用 python 在某人的网站周围腾跃的道德规范。我在 stackoverflow 上看到了一个接近我需要的答案,但它被删除了,因为 ticketmaster.com 要求发生这种情况。但是,我会把这些保留放在一边。
我想从杂货店网站自动获取一堆价格。我用 python 开始了我的项目,有点生疏。我以人类身份从浏览器会话中抓取 URL 文件,并运行了一堆循环来提取我想要的数据(很多“.find”)。问题是,当时我正在搜索 (.find()) 我手动下载的 html 文件。当我将代码切换到使用“urlopen”时,我遇到了一个我没有立即意识到的问题。
例如,此页面会根据您的浏览状态显示两种不同的内容。
http://www.hannaford.com/thumbnail/Produce/Fruits/pc/28546/46815.uts?displayAll=true
我认为应该如此,因为在这样的业务中,产品和价格可能对地理非常敏感。
我的想法是在我已经知道要选择的商店的此页面上开始“Python-ing”:www.hannaford.com/custserv/store_detail.jsp?viewStoreId=21026
我特别有这个表格:
<form action="/custserv/save_user_store.cmd"
method="post" name="selectThisStoreForm"
onsubmit="return StoreLocator.change.store(this,false,false,21026);"
>
<input type='hidden' name='form_state' value='selectThisStoreForm'/>
<input name="storeId" type="hidden" value="21026"/><p class="browseStoreLink">
<a href="javascript:void(0);"
onclick="this.form.submit();"
class="altLink"
>
<input class="shopNow" type="image" src="/assets/hf/assets/images/buttons/btn_shopNow.gif" border="0" alt="Shop Now"/>
</a>
</p>
</form>
所以我让 onsubmit 将一个 JS 函数发送到一个不打算被人类看到的页面。
Chrome 说当我与 Hannaford 交谈时,我总是有 10 个 cookie。7 个来自“hannaford.com”,3 个来自“www.hannaford.com”。
所以,只是挥舞一点:
sesh = requests.Session()
Params = {'selectThisStoreForm':''}
url = "http://www.hannaford.com/custserv/save_user_store.cmd"
sesh.post(url,param=Params)
urlopen(urlFRUITS,cookies=sesh.cookies)#??
我正在从 Sessions 中获取 cookie。我没有得到 Chrome 所说的数量。我也无法“.find”我想在每个页面中找到的标签。