使用python中的xpath从网站进行数据挖掘

时间:2015-07-19 06:05:44

标签: python xpath lxml

我运行这个程序,但它只给我“[]”而不是给网页数据。请帮助

import urllib 
   import re
   import lxml.html

   start_link= "http://aepcindia.com/ApparelMarketplaces/detail"
   html_string = urllib.urlopen(start_link)
   dom =  lxml.html.fromstring(html_string.read())
   side_bar_link = dom.xpath("//*[@id='show_cont']/div/table/tr[2]/td[2]/text()")
   print side_bar_link 
   file = open("next_page.txt","w")
   for link in side_bar_link:
       file.write(link)
       print link

   file.close()

1 个答案:

答案 0 :(得分:0)

您下载的HTML源代码包含一个空的内容区域:<div id="show_cont"></div>。此div稍后会被javascript函数showData()填充。当您在浏览器中查看页面时,之前会执行javascript,而不是使用urllib下载HTML源时的情况。

要获取所需的数据,您可以尝试模仿POST函数中的showData()请求,或者最好使用可编写脚本的无头浏览器来抓取网站。

更新:虽然无头浏览器是一种更普遍适用的方法,但在这种情况下,它可能是开销。实际上,您最好对showData()函数进行逆向工程。这里的alax-call太明显了,提供了一个简单的HTML表格,你也可以限制搜索:) http://aepcindia.com/ApparelMarketplaces/ajax_detail/search_type:/search_value: