首页 文章

Scrapy:使用相同的规则重新爬行

提问于
浏览
-2

我正在使用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 回答

  • 1

    在规则中筛选下一个站点的“下一个”站点 . 这样可以避免访问已访问过的评论网站 .

    Rule(SgmlLinkExtractor(allow=("ShowUserReviews-g.*",), restrict_xpaths=('//*[@id="REVIEWS"]/div[4]/div/div[2]/div/div/div[1]/a[text() = "Next"]',), unique=True), callback='parse_item', follow= True)
    

相关问题