当我们在Python中使用请求时,一些html代码消失了

时间:2015-06-29 22:03:40

标签: python html python-2.7 web-crawler

我正在抓取网站上的一些数据。我需要从产品列表中恢复一些链接。首先,我用inspect元素确定了一个链接:

enter image description here

然后我使用request将该页面的所有源代码保存在文本文件中:

source_code = requests.get(link)
plain_text= source_code.txt

然后我使用我的文本编辑器搜索链接,但没有找到它。我正在使用BeautifulSoup4,但我已经尝试了多种different方法来抓取页面以获取产品列表,但所有产品都给出相同的结果。

我怀疑当有人进入页面时,产品列表是由某些代码(可能是Java)生成的,但我不确定。我已经花了几个小时努力完成这项工作,所以任何提示都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

Python永远不会停下来逗我。我发现了一个使用PhantomJS的Python库。它允许我们在python程序中运行JavaScript代码。经过大量工作后我会回答我自己的问题:

from ghost import Ghost
import re

def filterProductLinks(links):  #filter the useless links using regex
   pLinks= list()
   for l in links:
      if re.match(".*productDetails.*",str(l)):
         pLinks.append(l)
   return pLinks #List of item url(40 max)

def getProductLinks(url):   #get the links generated by Java code
   ghost = Ghost(wait_timeout=100)
   ghost.open(url)
   links = ghost.evaluate("""
                    var links = document.querySelectorAll("a");
                    var listRet = [];
                    for (var i=0; i<links.length; i++){
                        listRet.push(links[i].href);
                    }
                    listRet;
                """)
   pLinks= filterProductLinks(links[0])
   return pLinks

#Test
pLinks= getProductLinks('http://www.lider.cl/walmart/catalog/category.jsp?id=CF_Nivel3_000042&pId=CF_Nivel1_000003&navAction=jump&navCount=0#categoryCategory=CF_Nivel3_000042&pageSizeCategory=20&currentPageCategory=1&currentGroupCategory=1&orderByCategory=lowestPrice&lowerLimitCategory=0&upperLimitCategory=0&&504')
for l in pLinks:
   print l
print len(pLinks)

Java代码不是我的。我是从Ghost.py文档页面中获取的:Ghost.py Documentation