我需要在页面上获取每个对象的标题和电话号码。
但电话号码显示为 - 0527 ... getphone
getphone:
<a id="phone" onclick="jQuery( '#Handy1').load(
'/ajax/detail/displayphonenumber.php?coded=MDE3Mi8gODUwNzQzMg--&adno=170868912&adsource=quoka+online&catid=27_2710&cusno=19128806' )">getphone</a>
ONCLICK - 使用个人数据制作ajax(针对每个对象)并下载表单中的完整电话号码 -
<span>0527555777000</span>
但是当没有电话号码时,情况可能会发生。因此我会'尝试除''onclick'变量。
我正在尝试执行ajax并获取完整的电话号码然后将包含电话号码的页面传递到parse_item()
但我遇到了麻烦。当我使用pdb进行调试时,我在parse_item()== http://www.example.com/ajax/detail/displayphonenumber.php中看到了该响应,而不是对象页面
我该如何解决?非常感谢!
P.S。请不要提出任何工具..只有Scrapy解决方案
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