我对抓取还很陌生,并希望为我的研究项目使用Scrapy抓取一个网站。
有问题的网站在每个页面上都有许多分类列表,并且在每个页面上都有一个蜜罐列表,当从浏览器查看时,蜜罐列表不会显示(在下面的代码中使用HappySpinoffs类的div),但是当一个人检查了DOM列表在那里,但只是在HTML的CSS块中隐藏了CSS属性(非嵌入式)。我已经检查了HTML,并且蜜罐列表和页面上的其他列表之间没有区别-唯一的区别是HTML文档中其上方的CSS属性。当我使用Scrapy抓取页面时,Xpath选择器会在蜜罐列表中出现,并且该漫游器会被阻止。类名是动态生成的,蜜罐列表的位置在每个页面上都会更改。查看下面的CSS代码块,仅使用蜜罐清单的类-其他的只是扔掉一个。
我目前正在通过以下xpath '/div[contains(@class,"js_resultTile")'
获取列表,但随后它捕获了蜜罐列表。我不知道如何通过xpath来获取所有这些CSS类,并将它们检查到我得到的列表中,以免蜜罐列表被删除。鉴于大约有500,000个列表,并且每周需要更新一次,因此解决方案必须超级快捷。
HTML:
<div class="js_listingResultsContainer">
<div class="b34_promotedTile js_resultTile js_pseudoLinkContainer js_rollover_container HappyReacting" data-listing-number="P108146928">...</div>
<div class="b34_promotedTile js_resultTile js_pseudoLinkContainer js_rollover_container HappyMorrow" data-listing-number="P108079642">...</div>
<div class="b34_promotedTile js_resultTile js_pseudoLinkContainer js_rollover_container Happypumping" data-listing-number="P107587584">...</div>
<div class="b34_promotedTile js_resultTile js_pseudoLinkContainer js_rollover_container HappyBudgeted" data-listing-number="P108129532">...</div>
<div class="b34_promotedTile js_resultTile js_pseudoLinkContainer js_rollover_container HappyDormant" data-listing-number="P107692442">...</div>
<div class="HappyMistimed js_resultTile" data-listing-number="106933717">...</div>
<div class="HappySalivas js_resultTile" data-listing-number="108171874">...</div>
<div class="HappyInanity js_resultTile" data-listing-number="108168952">...</div>
<div class="HappyMiss js_resultTile" data-listing-number="108168914">...</div>
<div class="HappyRevolver js_resultTile" data-listing-number="108138404">...</div>
<div class="HappyMongrel js_groupedResultTile" data-listing-number="108165172">...</div>
<div class="HappyMexicans js_groupedResultTile" data-listing-number="108111893">...</div>
<div class="HappyScaling js_resultTile" data-listing-number="108131862">...</div>
<div class="HappyJacob js_resultTile" data-listing-number="108108694">...</div>
<div class="HappyWhelp js_resultTile" data-listing-number="108152564">...</div>
<div class="HappyCome js_resultTile" data-listing-number="108163034">...</div>
<div class="HappyBrawler js_resultTile" data-listing-number="108153616">...</div>
<div class="HappySpinoffs js_resultTile" data-listing-number="107969187">...</div>
<div class="HappyDrug js_resultTile" data-listing-number="108117622">...</div>
<div class="HappyBecalmed js_resultTile" data-listing-number="108146204">...</div>
<div class="HappyInfante js_resultTile" data-listing-number="108134673">...</div>
</div>
页面HTML(不是外部CSS文件)中的CSS属性更进一步:
<style type="text/css">
.HappySpinoffs
{
position: absolute;
left: -6541px;
}
.HappyDefying
{
position: absolute;
left: -9018px;
}
.HappyBenefit
{
position: absolute;
left: -6421px;
}
.HappyAssert
{
left: -7575px;
position: absolute;
}
.HappyForswore
{
position: absolute;
left: -7694px;
}
.HappySmiler
{
left: -5308px;
position: absolute;
}
</style>
}