我正试图从航空网页上刮取商店位置,但我这样做的方式似乎它不起作用,有人可以指导我吗?或告诉我我做错了什么?这是我的代码:
import requests
from lxml.html import fromstring
from bs4 import BeautifulSoup
with requests.Session() as c:
url = 'http://www.aeropostale.com/storeLocator/index.jsp'
response = requests.get(url)
print(response)
# {'city': '', 'searchType': 'POSTAL_CODE', 'typeId': '0', 'findByZip': None, 'action': 'SEARCH_FOR_STORES', 'state': '', 'radius': '5', 'postalCode': None}
html = fromstring(response.content)
payload = dict(html.forms[2].fields)
print(payload)
# {'city': '', 'searchType': 'STATE', 'typeId': '0', 'findByZip': None, 'action': 'SEARCH_FOR_STORES', 'state': 'LA', 'radius': '50', 'postalCode': None}
payload.update(({'searchType': 'STATE', 'state': 'LA', 'radius': '50'}))
print(payload)
locations = c.post(url, data=payload)
print(locations)
r = c.get('http://www.aeropostale.com/storeLocator/results.jsp')
print(BeautifulSoup(r.content).text)
它没有得到发布的结果我不知道为什么以及当我试图找到http://www.aeropostale.com/storeLocator/results.jsp的形式 它似乎没有张贴的表格,它给了我这个表格
# {'emailPrefAERO': 'Y', 'surveyOnly': 'Y', 'emailAddress': None, 'isSMS': 'N'}
有人可以帮助我吗?
答案 0 :(得分:0)
您将查询发布到错误的位置,然后忽略响应。请勿在{{1}}页面使用单独的GET
。
转而转到results.jsp
位置:
results.jsp
演示:
locations = c.post(
'http://www.aeropostale.com/storeLocator/results.jsp',
data=payload)
print(BeautifulSoup(locations.content).text)