使用python进行抓取ASP.NETid为u的站点

2024-04-27 00:38:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把这个搜索结果ASP.NET网站使用Python请求发送POST请求。即使我使用GET请求来获取requestverificationtoken并将其包含在我的头中,我也只得到以下回复:

{"Token":"Y2VgsmEAAwA","Link":"/search/Y2VgsmEAAwA/"}

这不是有效的链接。这是在我的帖子请求中没有定义到达数据或区域的总搜索结果。我错过了什么?我该为谁创建这样一个生成(会话)的站点URL的ID?在

提前非常感谢大家!在

我的python脚本:

^{pr2}$

Tags: 数据token区域searchgetnet定义网站
1条回答
网友
1楼 · 发布于 2024-04-27 00:38:34

经过多次尝试,我发现您的搜索请求格式不正确(需要URL编码,而不是JSON),cookie信息被覆盖在标题中(让session来处理)。在

我就这样简化了代码,得到了预期的结果

r = requests.Session()

# GET request  
gr = r.get("http://www.feline.dk")
bsObj = BeautifulSoup(gr.text,"html.parser")
auth_string = bsObj.find("input", {"name": "__RequestVerificationToken"})['value']

# POST request
search_request = "Geography.Geography=Hou&Geography.GeographyLong=Hou%2C+Danmark+(Ferieomr%C3%A5de)&Geography.Id=847fcbc5-0795-4396-9318-01e638f3b0f6&Geography.SuggestionId=&Period.Arrival=&Period.Duration=7&Period.ArrivalCorrection=False&Price.MinPrice=&Price.MaxPrice=&Price.MinDiscountPercentage=&Accommodation.MinPersonNumber=&Accommodation.MinBedrooms=&Accommodation.NumberOfPets=&Accommodation.MaxDistanceWater=&Accommodation.MaxDistanceShopping=&Facilities.SwimmingPool=false&Facilities.Whirlpool=false&Facilities.Sauna=false&Facilities.InternetAccess=false&Facilities.SatelliteCableTV=false&Facilities.FireplaceStove=false&Facilities.Dishwasher=false&Facilities.WashingMachine=false&Facilities.TumblerDryer=false"

gr = r.post(
    url = 'http://www.feline.dk/search/',
    data = search_request,
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
)

print(gr.url)

结果:

^{pr2}$

相关问题 更多 >