使用python(不带BeautifulSoup-或不带)按块抓取大html。内存限制

时间:2018-09-04 16:52:16

标签: python html beautifulsoup

我正在尝试使用Python中的基本编码来提取Instagram中的关注者列表,因为我既不是Python专家也不是HTML专家。因此,我的方法是模拟类似人类的迭代。

基本上,我使用Selenium打开Instagram粉丝页面,使用基本的Python编码向下滚动无限滚动,并使用BeautifulSoup刮取列表。

问题在于,经过数小时的滚动后,由于列表很大,我达到了内存限制。

我目前的做法是:

  • 使用以下方法获取无限滚动窗口:elemWindow=browser.find_element_by_css_selector('.j6cq2')
  • 我向下滚动,直到大约30个新用户出现在列表中
  • 获取整个页面的来源:pg1=browser.page_source
  • 使用SoupStrainer和BeautifulSoup来获取整个列表(使用lxml是因为我在这里搜索,人们告诉它更快,并且确实如此):

strainer = SoupStrainer("a",{"class":"FPmhX notranslate zsYNt "})

elm1=bs4.BeautifulSoup(pg1, "lxml", parse_only=strainer)

  • 然后,我仅将出现的新用户导出到Excel(我具有最后的列表长度和新的列表长度,因此我导出差异)

主要问题是,在滚动几个小时后,脚本停止在pg1=browser.page_source处,可能是因为它已达到内存限制。

因此,我试图找出如何仅将向下滚动后出现的新用户的HTML块保留在计算机内存中,并从该html块中抓取小列表。

我在这里搜索了ElementTree的iterparsehtmltext.split,但是对于我来说,这是否是可循的途径并不清楚...

0 个答案:

没有答案