Scrapy меняет некоторые символы в multipart / form-data с помощью escape-символов - PullRequest
0 голосов
/ 30 марта 2019

В инструментах Chrome Dev данные формы выглядят следующим образом:

------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="hostURL"

http://oris.co.palm-beach.fl.us/or_web1/
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="pdfPath"

\\wcp01zfs-03.clerk.local\files2\ORISPDF\
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="pdfURL"

http://oris.co.palm-beach.fl.us/pdf/
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="pages"

1
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="id"

22591587
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="mpages"

1
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="doc_id"

22591587
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="page1"

image_from_file.asp?imageurl=\\ors_fs\ORImage\O\30338\O.30338.0268.0001.tif
------WebKitFormBoundarysGRfL8zMeuSs4zsH
Content-Disposition: form-data; name="WaterMarkText"

1
------WebKitFormBoundarysGRfL8zMeuSs4zsH--

, когда я копирую их в оболочку scrapy для отладки запроса, некоторые символы выглядят по-разному, и в результате (я полагаю) ошибка возврата запроса,Вот как это выглядит в scrapy (python 3).

enter image description here

Как правильно использовать форм-данные в моем запросе Scrapy?

Вот моя выдержка из кода Scrapy:

def get_image(self, response):
        # inspect_response(response, self)
        url = 'http://oris.co.palm-beach.fl.us:8080/PdfServlet/PdfServlet27'
        headers = {
                            'origin': "http://oris.co.palm-beach.fl.us",
                            'upgrade-insecure-requests': "1",
                            'dnt': "1",
                            'content-type': "multipart/form-data; boundary=----WebKitFormBoundarysGRfL8zMeuSs4zsH",
                            'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36",
                            'accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
                            'cache-control': "no-cache",
                             }
        id = response.xpath("//input[@name='doc_id']/@value").extract_first()                     

        body = '''------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="hostURL"

                    http://oris.co.palm-beach.fl.us/or_web1/
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="pdfPath"

                    \\wcp01zfs-03.clerk.local\files2\ORISPDF\
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="pdfURL"

                    http://oris.co.palm-beach.fl.us/pdf/
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="pages"

                    1
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="id"

                    {}
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="mpages"

                    1
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="doc_id"

                    {}
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="page1"

                    image_from_file.asp?imageurl=\\ors_fs\ORImage\O\30338\O.30338.0268.0001.tif
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH
                    Content-Disposition: form-data; name="WaterMarkText"

                    1
                    ------WebKitFormBoundarysGRfL8zMeuSs4zsH--'''.format(id, id)
        r =  scrapy.Request(url, method="POST", headers = headers, body = body, callback = self.get_pdf, dont_filter = True)
        yield r

А вот форма, которую я пытаюсь имитировать.

<td valign="bottom">

                <form name="courtform" action="http://oris.co.palm-beach.fl.us:8080/PdfServlet/PdfServlet27" method="post" enctype="multipart/form-data">

        <input type="hidden" name="hostURL" value="http://oris.co.palm-beach.fl.us/or_web1/" size="60">
        <input type="hidden" name="pdfPath" value="\\wcp01zfs-03.clerk.local\files2\ORISPDF\" size="60">
        <input type="hidden" name="pdfURL" value="http://oris.co.palm-beach.fl.us/pdf/" size="60">

        <input type="hidden" name="pages" value="1" size="60">
        <!--<input type="hidden" name="pages" value="1" size="60">-->
        <input type="hidden" name="id" value="22590889" size="60">
        <input type="hidden" name="mpages" value="1" size="60">
        <input type="hidden" name="doc_id" value="22590889" size="60">

                <input type="hidden" name="page1" value="image_from_file.asp?imageurl=\\ors_fs\ORImage\O\30336\O.30336.1200.0001.tif" size="60">

        <input type="hidden" name="WaterMarkText" value="1" size="60">

            &nbsp;&nbsp;<input name="button" type="button" value="View PDF" onclick="javascript:ValidateAndSubmit(this.form)">&nbsp;&nbsp;

</form></td>

1 Ответ

0 голосов
/ 31 марта 2019

Проблема с символами была связана с символом escape. Я должен был избежать escape-символа, и теперь Formdata выглядит идентично. Запрос все еще не работает. Так что я думаю, нужно открыть еще один вопрос для этого с обновленными данными.

...