本期,我们继续关于python爬虫策略的分析。这次,我们来分析一个难度较大的爬虫网站,我定义为“困难型”网站爬虫。比如前面有关微博网站的爬取,参见:Python:爬取微博某一时间段的数据。下面我分步分析如何实现这个网站的爬取。1.分析微博网站的结构
通过分析,我难度较大的是页面加载以及翻页的情况实现,由于网站采用ajax模式,只有下拉滚轮才能显示后续的微博内容。
2.selenium实现滚动加载功能
利用selenium简单实现一个滚轮滚动的效果。
def scroll_down(): html_page=driver.find_element_by_tag_name('html') for i in range(20): print(i) html_page.send_keys(Keys.END) time.sleep(0.7)
每次找到页面的最后一个参数,模拟点一个“END”键,让网页认为你在加载网页,为了克服反爬,每次休息0.7秒。
3.selenium实现翻页功能
def find_next(): next_sel='a.page.next' next_page=driver.find_element_by_css_selector(next_sel) print(next_page.get_attribute('href')) if next_page: return next_page.get_attribute('href')
4.爬取数据
这部分不再赘述,详见Python:爬取微博某一时间段的数据。
5.总结对于微博这样的网站,融合了ajax加载模式及大量的反爬机制,因此采用selenium进行爬虫是相当可以的,类似的可以爬取淘宝、京东、腾讯等相关大厂数据,这些网站反爬做的都很好,想要绕开反爬,selenium是个非常好的模块工具,因此,对于“困难型”网站的爬取,推荐使用selenium。
好了,本期就到这里,bye😊