[http://www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber?execution=e1s1]
例如跟踪号:LM920347139CN,
我想提取曲目历史数据,但是使用重定向
所以如何弄清楚,如果有任何方法来获取不包含表示逻辑的数据
答案 0 :(得分:1)
修改强>
显然有可用于跟踪的REST和SOAP API。见http://www.canadapost.ca/cpo/mc/business/productsservices/developers/services/tracking/default.jsf
最简单的(非API)方式可能是使用mechanize模块,您可以从PyPI获取该模块。您可以像使用Web浏览器一样使用它。它将遵循重定向,并根据此特定网站的要求管理任何cookie。例如:
import mechanize
br = mechanize.Browser()
url = 'http://www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber'
response = br.open(url)
br.select_form('tapByTrackSearch:trackSearch')
br.form['tapByTrackSearch:trackSearch:trackNumbers'] = 'LM920347139CN'
response = br.submit()
html = response.read()
如果您更喜欢使用requests
,或者如果您需要支持Python 3,requests
也会遵循重定向并根据需要管理Cookie
import requests
s = requests.Session()
url = 'http://www.canadapost.ca/cpotools/apps/track/personal/findByTrackNumber'
response = s.get(url)
但是,使用requests
,您需要设置所需的POST表单字段(我在此处未显示)。
获得HTML后,您可以使用BeautifulSoup等HTML解析器来处理和提取所需的数据。
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
tracking_table = soup.find(id='tapListResultForm:table_2')
.
.
.
您可以从中提取跟踪数据。