如何使用请求库获取输出列表?

How can I get a list of output using requests library?

我正在尝试从该图书馆http://www.dli.ernet.in/自动下载文件,并希望获得与特定语言(例如:英语)相对应的所有书籍的列表

import requests
r = requests.get('http://www.dli.ernet.in/')
params = {'Language': 'English'}

但我不确定下一步该怎么做。我要模仿

1) Select 语言

2) 单击搜索

3) 获取所有书名的列表。

首先要做的是弄清楚您的浏览器正在发出什么请求。您可以在 Firefox 中使用 "web developer tools" 来执行此操作:

  • 显示 Web 开发人员工具箱(工具->Web 开发人员->切换工具)
  • 单击 "Network" 选项卡
  • 执行搜索

这表明选择 "English" 作为查询的语言结果:

GET http://www.dli.ernet.in/cgi-bin/advsearch_db.cgi?perPage=25&listStart=0&r1=V1&title1=&author1=&year1=&year2=&subject1=Any&language1=English&scentre=Any&search=Search

我们可以使用 requests 库重现它,方法如下:

result = requests.get('http://www.dli.ernet.in/cgi-bin/advsearch_db.cgi',
                      params={
                          'language1': 'English',
                          'scentre': 'Any',
                          'listStart': '0',
                          'perPage': '25'
                      })

这将为我们获取 result.text 中网页的文本。你会 需要使用 HTML 解析器(如 lxml.htmlBeautifulSoup)来 解析它并提取书籍列表。另请注意,这似乎是分页响应,这意味着您不会通过单个请求获得 所有 结果。