我正在使用Scrapy尝试在this网站上进行搜索。 我正在改变的领域是NúmerodoProcesso na ORIGEM ,id为'idNumeroOriginario'。
但是,Post方法似乎没有改变页面上的任何内容。
以下是代码:
import scrapy
from scrapy.utils.response import open_in_browser
class MinimalSpider(scrapy.Spider):
name = 'stj-spider'
start_urls = ['https://ww2.stj.jus.br/processo/pesquisa/?aplicacao=processos.ea']
def parse(self, response):
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'browserName': 'mozilla',
'Connection': 'keep-alive',
'Referer': 'https://ww2.stj.jus.br/processo/pesquisa/?aplicacao=processos.ea',
}
yield scrapy.FormRequest.from_response(
response,
headers=headers,
formid='idForm',
formdata={'idNumeroOriginario': '1234'},
callback=self.after_search,
)
def after_search(self, response):
open_in_browser(response)
print response.body
我也尝试过请求,但无济于事。似乎有一百个隐藏的输入使它变得非常困难。
无论如何,谢谢你的帮助。
答案 0 :(得分:1)
我们只需更改一行即可使其正常工作:
Task[] tasks = new Task[3];
for (int i = 0; i < 3; i++)
{
int x = i;
tasks[i] = Task.Factory.StartNew(() =>
{
// the processPath will be different based on whatever the value for i is
ProcessStartInfo startInfo = null;
switch (x)
{
case 0:
startInfo = new ProcessStartInfo("c:\\windows\\notepad.exe");
break;
case 1:
startInfo = new ProcessStartInfo("c:\\windows\\explorer.exe");
break;
case 2:
startInfo = new ProcessStartInfo("c:\\windows\\regedit.exe");
break;
}
Process proc = Process.Start(startInfo);
proc.WaitForExit();
});
}
Task.WaitAll(tasks);
了解您在此处指定formdata={'idNumeroOriginario': '1234'},
表单值的方式。
问题是,idNumeroOriginario
是idNumeroOriginario
值,但表单输入id
值用作表单请求参数名称,将其更改为:
name