用scrapy更改HTML元素的值

2024-10-02 06:39:08 发布

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

我试图从这个网站上获取数据:Website link。在

我想从特定日期下载所有的PDF文件。在

虽然我已经成功地从第一页获取了文件并正确地下载了它们,但我无法更改日期,这样我就可以回到以前的日期并获得旧的pdf文件。在

我试过这句话:

scrapy.FormRequest.from_response(response,formxpath='//table//td//input[@type="text"]', formdata={'value': "20.05.2017"}, clickdata={'type':'submit'}, method='POST')

但是view(response)总是显示当前日期。在

我不确定这是不是正确的,我是新来的刮痧,我正在努力解决问题。我认为这个方法是正确的,因为当我更改日期时,链接没有改变,所以它应该是POST,而不是{}。

我有什么想法可以让它发挥作用?
我认为FormRequest()是这里最好的选择,但是我在网上没有看到任何其他的例子,而且scrapy网站上的文档也帮不了我那么多,所以我试图研究涉及登录凭据的示例,它们都使用FormRequest.from_response()

PS:我已经包括了一个与日期更改有关的HTML代码段的屏幕截图。在

enter image description here


Tags: 文件frompdf网站responsetypetablelink
1条回答
网友
1楼 · 发布于 2024-10-02 06:39:08

输入字段名称为“日期”,而不是“值”:

    <form id="dailyFekForm" name="dailyFekForm" action="/idocs-nph/search/dailyFekForm.html" method="post">
        <br>
        <div>

        </div>  
      <div class="non-printable" style="padding-left:20px;">
            <table>
                <tr>
                    <td style="font-size:100%; color:#3399FF;" align="left" >
                        <table>
                            <tr>
                                <td valign="center" style="font-size:100%; color:#3399FF;" ><b>Ημερομηνία Κυκλοφορίας</b></td>
                                <td>
                                    <img title="Επιλέξτε ημερομηνία για ημερήσια κυκλοφορία" border="0" src="/idocs-nph/images/tooltip.gif" >
                                </td>
                            </tr>
                        </table> 
                    </td>
                    <td><input id="date" name="date" type="text" value="29.05.2017"/></td>
                    <td><img src="/idocs-nph/images/admin/calendar.gif" id="triggerDate"/></td>
                    <td><input class="save" type="submit" value="Αναζήτηση" name="search" id="search"/></td>
                </tr>
            </table>

您还可以使用它的开发工具检查浏览器发送的内容:http://imgur.com/a/ztDtF(选中底部的“表单数据”)

因此,您可以使用:

^{pr2}$

使用scrapy shell的示例会话,显示不同的表行:

$ scrapy shell http://www.et.gr/idocs-nph/search/dailyFekForm.html
>>> from pprint import pprint
>>> pprint(response.css('table#result_table tr:not(.prop) td b').xpath('normalize-space()').getall())
['ΦΕΚ A 77 - 26.05.2017',
 'ΦΕΚ B 1836 - 25.05.2017',
 'ΦΕΚ B 1837 - 25.05.2017',
 (...)
 'ΦΕΚ Α.Α.Π. 112 - 25.05.2017',
 'ΦΕΚ Α.Α.Π. 113 - 26.05.2017',
 'ΦΕΚ Α.Α.Π. 114 - 26.05.2017',
 'ΦΕΚ Α.Α.Π. 115 - 26.05.2017']
>>> fetch(scrapy.FormRequest.from_response(response,formdata={'date': "19.05.2017"}))
2017-05-29 14:42:50 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.et.gr/idocs-nph/search/dailyFekForm.html> (referer: None) ['partial']
>>> pprint(response.css('table#result_table tr:not(.prop) td b').xpath('normalize-space()').getall())
['ΦΕΚ A 72 - 19.05.2017',
 'ΦΕΚ A 73 - 19.05.2017',
 'ΦΕΚ A 74 - 19.05.2017',
 (...)
 'ΦΕΚ Υ.Ο.Δ.Δ. 234 - 18.05.2017',
 'ΦΕΚ Α.Α.Π. 105 - 16.05.2017',
 'ΦΕΚ Α.Α.Π. 108 - 16.05.2017']
>>> fetch(scrapy.FormRequest.from_response(response,formdata={'date': "16.05.2017"}))
2017-05-29 14:45:53 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.et.gr/idocs-nph/search/dailyFekForm.html> (referer: None) ['partial']
>>> pprint(response.css('table#result_table tr:not(.prop) td b').xpath('normalize-space()').getall())
['ΦΕΚ A 69 - 16.05.2017',
 'ΦΕΚ B 1638 - 15.05.2017',
 'ΦΕΚ B 1639 - 15.05.2017',
 (...)
 'ΦΕΚ Υ.Ο.Δ.Δ. 228 - 16.05.2017',
 'ΦΕΚ Υ.Ο.Δ.Δ. 229 - 16.05.2017',
 'ΦΕΚ Α.Α.Π. 102 - 15.05.2017']
>>> 

相关问题 更多 >

    热门问题