已解決:
request = Request(sec_text_url, callback=self.parse_sec_text)
yield request
————————————————————————————————————
在抓一個書評頁,每個一級書評下面都可能有二級書評。
遍歷一級書評的同時判斷二級書評數(shù)量是否為空,不為空則抓取這個一級書評的二級書評json數(shù)據(jù)。
怎么實現(xiàn)執(zhí)行Request(sec_text_url, callback=self.parse_sec_text)獲得二級書評數(shù)據(jù)后,繼續(xù)執(zhí)行下面的語句呢?代碼如下:
import scrapy
from scrapy.http import Request
from ysw.items import YswItem
import re
import json
from scrapy.selector import Selector
class ShupingSpider(scrapy.Spider):
name = 'shuping'
#allowed_domains = ['www.yousuu.com']
start_urls = ['http://www.yousuu.com/book/xxxx']
#此方法解析評論第一頁的書評
def parse(self, response):
#遍歷第一頁的一級書評
for r in response.xpath('//*[@id="content"]/div'):
item = YswItem() #對象
#發(fā)貼時間
item['time'] = r.xpath('string(./div/div/div[1]/div/span[2])').extract_first().strip()
#有些一級評論可能沒有贊同,需要判斷一下
agree = r.xpath('string(./div/div/div[2]/button[1]/span)').extract_first().strip()
if agree:
item['agree'] = agree
else:
item['agree'] = '0'
'''判斷二級評論數(shù)量,二級評論不為空時需要獲取二級評論的信息,
因為二級評論沒有贊同和三級評論,所以只獲得二級評論的文本text就行'''
sec_num = r.xpath('string(./div/div/div[2]/button[2]/span)').extract_first().strip()
if sec_num:
item['sec_num'] = sec_num
#獲取二級評論url的組成部分cid
cid = r.xpath('./@cid').extract_first().strip()
#補全二級評論頁面的url
sec_text_url = "http://www.yousuu.com/ajax/getonecomment?render=true&cid={}".format(cid)
#在這里?。~@得二級書評內(nèi)容???
Request(sec_text_url, callback=self.parse_sec_text)
#包含第二頁js鏈接信息的標(biāo)簽
nextcom = response.xpath('//a[text()="下一頁"]/@onclick').extract_first().strip()
if nextcom:
print('next: '+nextcom)
#獲得bid
bid = re.search(r"(.*?)'(.*?)',(.*)", nextcom).group(2)
#獲得nexttime
nexttime = re.search(r"(.*),'(.*?)'(.*)", nextcom).group(2)
#獲得第二頁的url
second_url = "http://www.yousuu.com/ajax/nextcomment?bid={}&nexttime={}".format(bid, nexttime)
print(second_url)
#將第二頁和之后書評頁的json格式數(shù)據(jù)交給shuping_2解析
return Request(second_url, callback=self.parse_2)
else:
print('沒有下一頁了!')
我試過先將二級書評的請求放在列表中,最后和下一頁的請求一起return,如下:
sec_text_url = "http://www.yousuu.com/ajax/getonecomment?render=true&cid={}".format(cid)
request = []
request.append(Request(sec_text_url, callback=self.parse_sec_text))
requests = ','.join(request)
##################################
return requests, Request(second_url, callback=self.parse_2)
報錯如下:
請前輩們指點錯誤在哪,或者有其他方法實現(xiàn)在遍歷一級書評時就能獲得http.Request()結(jié)果并繼續(xù)執(zhí)行下面的語句嗎?感謝!感謝!
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。