【问题标题】:Web scraping a JSON file with requestsWeb 抓取带有请求的 JSON 文件
【发布时间】:2020-03-17 17:52:59
【问题描述】:

我正在尝试使用请求从this site 检索时间表。 我让帖子发送正确的参数并取回空的 HTML 骨架,但我想返回 json file

这是我在检查页面时看到的内容,并突出显示您可以看到我要检索的文件。

到目前为止,这是我的代码:

url = "https://alilauro-tickets.certusonline.com/"
headers = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.3'}
data = "msg=TimeTable&req=%7B%22getAvailability%22%3A%22Y%22%2C%22getBasicPrice%22%3A%22Y%22%2C%22getRouteAnalysis%22%3A%22Y%22%2C%22directOnly%22%3A%22Y%22%2C%22legs%22%3A%224%22%2C%22pax%22%3A1%2C%22origin%22%3A%22BEV%22%2C%22destination%22%3A%22ISC%22%2C%22tripRequest%22%3A%5B%7B%22tripfrom%22%3A%22BEV%22%2C%22tripto%22%3A%22ISC%22%2C%22tripdate%22%3A%222020-03-19%22%2C%22tripleg%22%3A0%7D%2C%7B%22tripfrom%22%3A%22ISC%22%2C%22tripto%22%3A%22BEV%22%2C%22tripdate%22%3A%222020-03-19%22%2C%22tripleg%22%3A1%7D%2C%7B%22tripfrom%22%3A%22BEV%22%2C%22tripto%22%3A%22FOR%22%2C%22tripdate%22%3A%222020-03-19%22%2C%22tripleg%22%3A2%7D%2C%7B%22tripfrom%22%3A%22FOR%22%2C%22tripto%22%3A%22BEV%22%2C%22tripdate%22%3A%222020-03-19%22%2C%22tripleg%22%3A3%7D%5D%7D"
r = requests.post(url, data=data, headers=headers, timeout=20)

【问题讨论】:

    标签: python web-scraping python-requests


    【解决方案1】:

    请求应该如下:

    url = 'https://alilauro-tickets.certusonline.com/php/proxy.php'
    
    headers = {'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.3'}
    
    data = {
      'msg': 'TimeTable',
      'req': '{"getAvailability":"Y","getBasicPrice":"Y","getRouteAnalysis":"Y","directOnly":"Y","legs":1,"pax":1,"origin":"BEV","destination":"FOR","tripRequest":[{"tripfrom":"BEV","tripto":"FOR","tripdate":"2020-03-18","tripleg":0}]}'
    }
    
    response = requests.post(url, headers=headers, data=data)
    

    【讨论】:

    • 谢谢。这是我问自己“为什么我没想到”的时刻之一
    • 它可以工作,但我没有返回任何数据和错误“无效的会话 ID”。有什么办法可以解决吗?
    • 检查 cookie 的会话 ID。您可以使用requests.session() 在请求之间存储cookie
    • 谢谢。我确实试了一下,但我仍然收到错误。如果你想看看,我创建了一个新问题:stackoverflow.com/questions/60728735/…
    • 它比使用会话发送单个请求更复杂。您需要分析网站,查找会话 ID 是如何创建的,或者是否需要任何其他 cookie、令牌。可能存在无法使用请求处理的 javascript。您可以尝试先使用 session 向主页发出请求,然后再发出请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2013-05-30
    相关资源
    最近更新 更多