Python中requests库爬取网页时遇到jQuery的val函数设置的Input标签,如何获取input值?
如题,有没有其他的方法能够获取
Python中requests库爬取网页时遇到jQuery的val函数设置的Input标签,如何获取input值?
6 回复
Selenium+firefox,这个方案比较麻烦,爬起来也比较慢,但是可以解决所有 js 事件加载等问题。
遇到这种问题,直接上代码。jQuery的.val()设置的input值,在DOM里就是value属性,用requests配合BeautifulSoup就能直接拿到。
import requests
from bs4 import BeautifulSoup
# 1. 先发起请求,拿到页面HTML
url = '你的目标网址'
headers = {'User-Agent': 'Mozilla/5.0'} # 加个UA头,防反爬
resp = requests.get(url, headers=headers)
html = resp.text
# 2. 用BeautifulSoup解析
soup = BeautifulSoup(html, 'html.parser')
# 3. 找到目标input标签
# 假设input标签有id,比如 <input id="targetInput" ...>
target_input = soup.find('input', {'id': 'targetInput'})
# 如果没id,用其他属性定位,比如name、class等
# target_input = soup.find('input', {'name': 'username'})
if target_input:
# 4. 直接获取value属性的值
input_value = target_input.get('value')
print(f"获取到的input值为: {input_value}")
else:
print("没找到目标input标签")
核心就两步:
requests把网页HTML源码抓下来。BeautifulSoup解析,用.find()定位到那个input标签,然后用.get('value')把值取出来。
注意点:
- 如果页面是JavaScript动态加载的(比如用Ajax),
requests拿到的是初始HTML,可能不包含JS执行后的值。这时候得用Selenium或Playwright这类能执行JS的工具。 - 仔细看网页源码,确认input标签的准确属性(id、name、class等)来定位。
总结:先看页面是不是静态的,是的话用上面代码直接取value属性就行。
感谢
我觉得 headless chrome 更好用些,不过如果页面不复杂的话,分析一下对方如何获取和设置数据的直接抓数据来源是最简单的。 基本的元素分析能力是爬虫工程师必备。
自写的框架 https://github.com/howie6879/ruia,支持 js 加载 你可以试试
Chrome 有一些奇奇怪怪的问题,比如截图有 Bug,还是 Firefox 稳定些。

