gpt4 book ai didi

python - 使用 Python 和 beautifulsoup4 登录网站后如何抓取搜索结果?

转载 作者:太空宇宙 更新时间:2023-11-03 21:03:54 24 4
gpt4 key购买 nike

我想登录一个网站,在页面上执行搜索,然后抓取所有结果。

我已经设法使用 Python 和请求登录,但是当我在页面上执行 get 请求时,我想要执行搜索,或者每当我在该页面上执行 post 请求时,所有搜索条件都会在body,我没有真正得到任何搜索结果。相反,标题仍然显示“登录页面”,这是登录页面的标题,所以不知何故,我似乎无法在登录后执行任何 REST 操作。是否有任何特定的方法可以在需要时抓取网站一个登录然后执行搜索?

以下是我的尝试:

import requests
from lxml import html
from bs4 import BeautifulSoup

USERNAME = "abcdefgh"
PASSWORD = "xxxxxxx"

LOGIN_URL = "https://www.assortis.com/en/login.asp"
URL = "https://www.assortis.com/en/members/bsc_search.asp?act=sc"
SEARCH_URL = "https://www.assortis.com/en/members/bsc_results.asp"


def scrapeIt():
session_requests = requests.session()

#login
result = session_requests.get(LOGIN_URL)
tree = html.fromstring(result.text)
# print(tree)

# Create payload
payload = {
"login_name": USERNAME,
"login_pwd": PASSWORD,
"login_btn": "Login"
}

search_payload = {
'mmb_cou_hid': '0,0',
'mmb_don_hid': '0,0',
'mmb_sct_hid': '0,0',
'act': 'contract',
'srch_sdate': '2016-01-01',
'srch_edate': '2018-12-31',
'procurement_type': 'Services',
'srch_budgettype': 'any',
'srch_budget': '',
'srch_query': '',
'srch_querytype': 'all of the words from'
}
# Perform login
result = session_requests.post(LOGIN_URL, data=payload, headers=dict(referer=LOGIN_URL))

# Scrape url
result = session_requests.get(URL, headers=dict(referer=URL))
result = session_requests.post(SEARCH_URL, data=search_payload, headers=dict(referer=SEARCH_URL))
content = result.content
# print(content)
data = result.text
soup = BeautifulSoup(data, 'html.parser')

print(soup)


scrapeIt()

编辑:该网页可能是用 JavaScript 编写的。

最佳答案

登录后将您的response.text保存到本地文件,要查看您是否真正登录,请检查该文件否则,请尝试 Selenium chromedriver,而不是对 http 请求进行逆向工程。

日志记录部分在 Selenium 上更容易,但在页面上查找内容则不然,使用等待动态加载异常,driver.page_source 查看 html,有时浏览器写的 html 不同,即: <tbody>标签

关于python - 使用 Python 和 beautifulsoup4 登录网站后如何抓取搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55553513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com