首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Python中按下带有POST请求和从弹出窗口中抓取数据的按钮

在Python中按下带有POST请求和从弹出窗口中抓取数据的按钮
EN

Stack Overflow用户
提问于 2018-07-06 05:13:34
回答 1查看 1.1K关注 0票数 0

我想按下"Suche starten“按钮,从这个页面上抓取一个研究项目的结果(基本上不需要填写任何表格就可以按下它--然后弹出一个窗口,里面有我想要的数据)。

代码语言:javascript
复制
https://www.insolvenzbekanntmachungen.de/cgi-bin/bl_suche.pl

基本上,它是德国对破产公司的公开公告。我已经花了相当多的时间来尝试让它运行,但不知何故,我无法让它工作。我知道我也可以尝试一下selenium headless浏览器,但首先,我更喜欢更干净的请求解决方案,其次,我希望能够从服务器上连续运行脚本,只需要很少的工作,而且没有屏幕。

因此,到目前为止,我所做的是,检查我的浏览器使用Firefox Dev工具发送的post请求,并尝试模拟Post请求。问题是我只能从初始窗口获得标准数据,而不能从包含所有我想要的数据的打开窗口获得标准数据。

因此,我导入了请求库,并创建了一个带有头部和有效负载的自定义请求。

代码语言:javascript
复制
headers={
'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "en-GB,en;q=0.5",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Content-Length": "413",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "www.insolvenzbekanntmachungen.de",
"Pragma": "no-cache",
"Referer": "https://www.insolvenzbekanntmachungen.de/cgi-bin/bl_suche.pl",
"Upgrade-Insecure-Requests": "1"
}

payload={
'Suchfunktion': 'uneingeschr',
'Absenden': 'Suche+starten',
'Bundesland': '-Hamburg',
'Gericht': 'Hamburg',
'Datum1':'',
'Datum2':'',
'Name':'',
'Sitz':'',
'Abteilungsnr':'',
'Registerzeichen': '--',
'Lfdnr':'',
'Jahreszahl': '--',
'Registerart': '--+keine+Angabe+--',
'select_registergericht':'',
'Registergericht': '--+keine+Angabe+--',
'Registernummer':'',
'Gegenstand': '--+Alle+Bekanntmachungen+innerhalb+des+Verfahrens+--',
'matchesperpage': '10',
'page': '1',
'sortedby': 'Datum',
'submit': 'return validate_globe(this)',
}

然后我提出以下请求:

代码语言:javascript
复制
r = requests.post('https://www.insolvenzbekanntmachungen.de/cgi-bin/bl_suche.pl',headers=headers,data=payload)

不幸的是,print(r.text)不会给我显示在浏览器中的弹出窗口中的数据。

任何帮助都将不胜感激!

贾斯珀

EN

回答 1

Stack Overflow用户

发布于 2018-07-06 05:46:33

快速而简单的修复方法如下所示。试一试:

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

URL = 'https://www.insolvenzbekanntmachungen.de/cgi-bin/bl_suche.pl'
payload = 'Suchfunktion=uneingeschr&Absenden=Suche+starten&Bundesland=--+Alle+Bundesl%E4nder+--&Gericht=--+Alle+Insolvenzgerichte+--&Datum1=&Datum2=&Name=&Sitz=&Abteilungsnr=&Registerzeichen=--&Lfdnr=&Jahreszahl=--&Registerart=--+keine+Angabe+--&select_registergericht=&Registergericht=--+keine+Angabe+--&Registernummer=&Gegenstand=--+Alle+Bekanntmachungen+innerhalb+des+Verfahrens+--&matchesperpage=10&page=1&sortedby=Datum'

with requests.Session() as s:
    s.headers={"User-Agent":"Mozilla/5.0"}
    s.headers.update({'Content-Type': 'application/x-www-form-urlencoded'})
    res = s.post(URL, data = payload)
    soup = BeautifulSoup(res.text, "lxml")
    for item in soup.select("b li a"):
        print(item.get_text(strip=True))

输出:

代码语言:javascript
复制
2018-07-05A & A Eco Clean Gebäudereinigung GmbH, München, 1503 IN 1836/16, Registergericht München, HRB 189121
2018-07-05A & A Eco Clean Gebäudereinigung GmbH, München, 1503 IN 1836/16, Registergericht München, HRB 189121
2018-07-05A + S Wohnungsbau Besitz GmbH & Co.KG, Kandel, 3 IN 96/12, Registergericht Landau in der Pfalz, HRA 21214
2018-07-05Abb Nicola, Untersöchering, IN 462/11
2018-07-05Abb Nicola, Untersöchering, IN 462/11
2018-07-05Abdul Basit Qureshi, Kirchheim, 13 IN 23/17
2018-07-05Abdul Basit Qureshi, Kirchheim, 13 IN 23/17
2018-07-05Abdul Basit Qureshi, Kirchheim, 13 IN 23/17
2018-07-05Abdulrahman, Oulat, Bottrop, 162 IN 76/12
2018-07-05Abdurachid Hassan, München, 1500 IK 2170/17
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51199996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档