我运行这个程序,但它只给我“[]”而不是给网页数据。请帮助
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()
答案 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: