【问题标题】:how to crawl asp webform link using scrapy如何使用scrapy抓取asp webform链接
【发布时间】:2021-08-07 08:15:39
【问题描述】:

我想抓取一个网络表单站点,但链接不是常规的 href,它们如下所示: 我想让scrapy得到那个链接并去那里

http://www.sonnaonline.com/DisplayResults.aspx?Menu=1&ParentID=13&Flag=dbID&Selid=8483", false, true))">链接文本

【问题讨论】:

    标签: scrapy webforms web-crawler


    【解决方案1】:

    Asp.net 是一个表单驱动的框架。那么,您必须填写表格并手动发布才能访问页面指示吗?

    怎么做?

    首先,你可以看看这里,我的scrapy代码。 https://github.com/Timezone-design/python-scrapy-asp-net/blob/master/scrapy_spider/spiders/burzarada_spider.py

    您应该首先找出 WebForm_DoPostBackWithOptions() 在页面中的作用。您可以通过 Ctrl+U 从页面源中搜索功能。

    你很快就会知道它是做什么的,它在哪里填写这些信息"ctl00$ContentPlaceHolder1$DtGrdAttraf$ctl06$LnkBtnDisplayHadith", "", false, "", "http://www.sonnaonline.com/DisplayResults.aspx?Menu=1&ParentID=13&Flag=dbID&Selid=8483", false, true

    那么,事情就清楚了。

    你将a标签的href提取到一个字符串中

    response.css('... a ::attr(href)').extract()[0].href # assuming there are many <a>s there
    

    然后用逗号分割字符串"ctl00$ContentPlaceHolder1$DtGrdAttraf$ctl06$LnkBtnDisplayHadith", "", false, "", "http://www.sonnaonline.com/DisplayResults.aspx?Menu=1&amp;ParentID=13&amp;Flag=dbID&amp;Selid=8483", false, true,并将它们填充到适当的输入元素中并通过scrapy.FormRequest发布。

    yield scrapy.FormRequest( 
    
        'https://burzarada.hzz.hr/Posloprimac_RadnaMjesta.aspx', 
    
        formdata = { 
            '__EVENTTARGET': eventTarget, 
            '__EVENTARGUMENT': eventArgument, 
            '__LASTFOCUS': lastFocus, 
            '__VIEWSTATE': viewState, 
            '__VIEWSTATEGENERATOR': viewStateGenerator,
            '__VIEWSTATEENCRYPTED': viewStateEncrypted,
            'ctl00$MainContent$ddlPageSize': pageSize,
            'ctl00$MainContent$ddlSort': sort,
        },
    
        callback=self.parse_multiple_pages 
        )
    

    解释:

    https://burzarada.hzz.hr/Posloprimac_RadnaMjesta.aspx # url to post the form.
    formdata # form data as json. keys are input names.
    callback # function to get the response and do next things.
    

    维奥拉!您可以进入页面,响应可以作为回调函数中的参数获取。

    您可以在上面的链接中看到一些示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      相关资源
      最近更新 更多