【问题标题】:Python Beautifulsoup dropdown menuPython Beautifulsoup 下拉菜单
【发布时间】:2021-05-13 15:25:20
【问题描述】:

我正在尝试在下拉菜单中选择当前月份,但我不确定 Beautifulsoup 是否像 Selenium,我应该“单击”搜索按钮以获取结果,并且不知道如何在 Beautifulsoup 中执行此操作,因为网站没有作为硒打开,我无法观察是否选择月份的过程,我使用:

html_link = 'https://www.ksei.co.id/publications/new-securities-registration?setLocale=en-US'
html = requests.get(html_link).text
soup = BeautifulSoup(html, 'html.parser')
now = datetime.datetime.now()
month = now.month
soup.select('(option["{}"])'.format(month))
FourDaysAgo = (datetime.datetime.now() - datetime.timedelta(days = 4))
FourDaysAgo_day = FourDaysAgo.day
now = datetime.date.today()
today = now.day
d = range(FourDaysAgo_day,today)

我可以知道如何选择月份然后点击查看结果吗?非常感谢!

【问题讨论】:

  • Beautifulsoup 用于解析 HTML,而不是对其执行操作。
  • Beauifulsoup 用于抓取。它没有任何点击功能。您可以尝试使用点击的 get.request 并将其传递给 BS。
  • 另外补充一下,beautiful soup 没有任何类似浏览器的功能,它用于从静态页面中抓取内容,并且没有任何与动态对象(例如下拉菜单等)一起工作的功能你必须手动输入一些测试参数,然后对它去的 url 做一些研究。

标签: python


【解决方案1】:

我使用提供的链接做了一些工作,看起来您只需将参数作为获取请求参数传递即可选择月份和年份。

def get_page(month: int, year: int):
    uri = f'https://www.ksei.co.id/publications/new-securities-registration?setLocale=en-US&Month={str(month).rjust(2, '0')}&Year={year}'
    return requests.get(uri)

现在你可以使用上面的函数来获取网页然后你可以抓取 数据。

注意:一月从数字 1 开始

【讨论】:

  • 非常感谢!但请问我是否可以删除 .rjust(2, '0')?是填两个0吗?
  • 不,据我所知,当我进入 2018 年 3 月时,它在数字 4 之前附加了 0。所以我想我会使用 rjust 来确保长度为 2,当长度为 1 时,它会附加一个单 0 开始。 rjust 表示向右调整宽度为 2 并填充字符 '0'
猜你喜欢
  • 2023-03-05
  • 2021-09-13
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多