Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy:使用相同的规则重新爬行_Python_Scrapy - Fatal编程技术网

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

Python Scrapy:使用相同的规则重新爬行,python,scrapy,Python,Scrapy,我正在使用scrapy从tripAdvisor中提取评论 我的起点是酒店。例如: 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.*"

我正在使用scrapy从tripAdvisor中提取评论

我的起点是酒店。例如:

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页

  • 感谢在“下一个站点”规则中筛选“下一个”站点。这样可以避免访问已经访问过的审查站点

    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)
    

    谢谢如果我将此规则添加到旧规则中,它会起作用吗?刮板将重新爬行到下一页?将其添加为第一条规则?我这么问是因为我读到了关于不止一条规则的问题。我怎么知道这些规则被检查的顺序呢?大多数情况下,我对此类网站有两个规则:一个是导航URL,另一个是详细网站。顺序并不重要——至少我从来没有这样认为过。因此,我将把你的scraper的第一条规则改为这个,Scrapy应该很乐意进入下一个页面,只要它们可用——并解析站点的主体。