过激的回应

2024-10-08 18:28:53 发布

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

我需要得到标题和电话号码的每一个对象在页面上。在

但电话号码显示为-0527…getphone

获取电话:

<a id="phone" onclick="jQuery( '#Handy1').load(
'/ajax/detail/displayphonenumber.php?coded=MDE3Mi8gODUwNzQzMg--&amp;adno=170868912&amp;adsource=quoka+online&amp;catid=27_2710&amp;cusno=19128806' )">getphone</a>

ONCLICK-使用单个数据(针对每个对象)生成ajax,并以以下形式下载完整的电话号码-

^{pr2}$

但这种情况在根本没有电话号码的情况下是可能的。因此,我对“onclick”变量执行“try except”。在

我正在尝试执行ajax并获取完整的电话号码,然后将下载了电话号码的页面传递到parse_item()

但我有麻烦。当我用pdb进行调试时,我在parse_item()==http://www.example.com/ajax/detail/displayphonenumber.php中看到了该响应,而不是对象的页面

我该怎么修?谢谢!在

请注意,不要提出任何工具。。只有稀奇古怪的解决办法

def parse(self, response):
        urls = response.xpath('//div/a/@href').extract()
        for url in urls:
            absolute_url = response.urljoin(url)
            request = scrapy.Request(absolute_url, callback=self.phone)
            yield request


def phone(self, response):
        try:
            onclick = response.xpath('//a[@id="phone"]/@onclick').extract()[0]
        except:
            onclick = None    
        if onclick:            
            click_split = onclick.split('?')
            params = click_split[1]
            params_split = params.split('&')
            coded = params_split[0].split('=')
            adno = params_split[1].split('=')
            adsource = params_split[2].split('=')
            catid = params_split[3].split('=')
            cusno = params_split[4].split('=')

            return [ FormRequest("http://www.example.com/ajax/detail/displayphonenumber.php",
                                    formdata={'coded': coded[1],
                                              'adno': adno[1],
                                              'adsource': adsource[1],
                                              'catid': catid[1],
                                              'cusno': cusno[1]},
                                    callback=self.parse_item) ]
        else:
            self.parse_item(response)


def parse_item(self, response):
        item = LotItem()

        try:
            item['title'] = response.xpath('//h1/text()').extract()[0]
        except:
            item['title'] = 'no title'

        try:
            item['phone_number'] = response.xpath('//ul/li/text()').extract()[0]
        except:
            item['phone_number'] = 'no phone number'

        yield item

Tags: selfparseresponsephone电话号码ajaxparamsitem

热门问题