如何使用Python请求提交单选按钮表单?

2024-09-28 03:17:18 发布

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

我正在尝试学习web交互,特别是使用请求。在

为此,我对在请求中使用Python下载汽车部件列表很感兴趣OReillyAuto.com网站但我遇到了一个小问题。在

当我浏览到this url时,它应该会显示我指定车型的刹车片和刹车片的列表。但是,它会弹出一组单选按钮,询问我是否要查看左侧、右侧或所有部分的部件。在

我一辈子都不知道如何做出选择,如何得到我能在Chrome开发工具中看到的HTML,其中包含品牌名称、价格等列表

我尝试了很多方法,但现在我做到了:

#import HTTP libraries
import requests
#import HTML parsing libraries
import bs4

url = 'http://www.oreillyauto.com/site/c/search/Brake+Pads+&+Shoes/C0068/C0009.oap?model=G6&vi=1432754&year=2006&make=Pontiac'

answerURL = 'http://www.oreillyauto.com/site/ConditionSelectServlet?answer=-1'

print("Making request")
session = requests.Session()
session.headers.update({'referer': url})
r = session.get(answerURL)
print(r.status_code)

oreillyList = bs4.BeautifulSoup(r.text, "lxml")

print("Writing response...")
logfile = 'C:/Users/mhurley/Portable_Python/notebooks/' + output + '.log' 
with open(logfile, 'w') as file:
    file.write(oreillyList.prettify())
print("...done writing "+logfile)

我希望我写出来的日志文件中大约有5200行,就像我在“查看页面源代码”时所做的那样。但是,我只得到了大约3000行,而且这个列表中似乎没有任何部分。在

也许我真的明白了我的想法,但我没有正确地理解它。关于如何通过这个对话请求有什么提示吗?在

编辑:我怀疑这是与我的目的相关的HTML:

^{pr2}$

我很难理解如何与这个<form>元素交互。如何使“onclick=”发生以便表单被提交?在


Tags: importcomhttpurllibraries列表sessionhtml
1条回答
网友
1楼 · 发布于 2024-09-28 03:17:18

您需要使用Selenium+BeautifulSoup的组合。在

首先,您将使用selenium在浏览器中打开网页,选择正确的单选按钮,然后提交表单。在

在这之后,使用BeautifulSoup来解析页面中的刹车。在

相关问题 更多 >

    热门问题