我正在使用scrapy从tripAdvisor中提取评论 .
我的start_urls是酒店 . 例如:
http://www.tripadvisor.com/Hotel_Review-g60763-d80075-Reviews-Amsterdam_Court_Hotel-New_York_City_New_York.html#REVIEWS.
从这个页面我正在使用这个规则爬到评论页面:
rules = (
Rule(SgmlLinkExtractor(allow=("ShowUserReviews-g.*",), restrict_xpaths=('//*[@id="REVIEWS"]/div[4]/div/div[2]/div/div/div[1]/a',), unique=True), callback='parse_item', follow= True),
Rule(SgmlLinkExtractor(allow=("ShowUserReviews-g.*",),restrict_xpaths=('//*[@id="REVIEWS"]/div[contains(@class,"deckTools btm")]',),unique=True),callback='parse_item',follow=True),
)
评论页面的示例:
http://www.tripadvisor.com/ShowUserReviews-g187514-d228523-r275442835-Hotel_Petit_Palace_Arturo_Soria-Madrid.html#REVIEWS
在每个评论页面的末尾有这个酒店的下一个评论页面的链接,编号如下:1,2,3,4 .....我可以使用相同的规则,我认为,下一个地址是相似的 .
按照这个打印屏幕:
http://s16.postimg.org/w68m82ouc/Screenshot_from_2015_07_02_12_36_03.jpg
我的问题:
-
规则抓取的工作原理是什么?刮刀可以使用相同的规则重新爬行到下一个评论页面吗?我需要别的吗?
-
如何避免抓取我之前看到的评论页面?例如,从第3页爬到第1页和第2页..?
谢谢
1 回答
在规则中筛选下一个站点的“下一个”站点 . 这样可以避免访问已访问过的评论网站 .