js 抓取网页内容(pyopenssl.whl安装的时候需要用pipinstall?.. )

优采云 发布时间: 2021-10-03 03:10

  js 抓取网页内容(pyopenssl.whl安装的时候需要用pipinstall?..

)

  最近在学习scrapy爬取动态js加载页面,写这个做个记录。

  scrapy需要的环境是python2.7+lxml+pyopenssl+twisted+pywin32等,网上有教程可以参考等,注意安装pyopenssl.whl时需要使用pip install。 ..whl 另外,如果使用mysql,需要安装mysqldb模块。

  最佳安装教程:

  补充:scrapy1.1中支持Python3。官方文档说在linux环境下只支持python3,但是windows下也可以试试。供参考,中间需要手动下载lxml,使用pip install。..whl 执行安装,手动安装pypiwin32,然后导入twisted.txt的两个文件。

  入门教程看官方文档,英文原版和中文版#topics-selectors-htmlcode。

  Xpath是scrapy内置的一个比较简单的dom解析方法,但是作为一个习惯了php的simple_html_dom解析的人,还是很偏向xpath的。Xpath 过于严格,无法通过跳跃进行查询。必须逐层解析。,虽然xpath很麻烦,但是比较容易出错。Response.xpath().extract() 和 response.xpath().re() 以列表的形式执行。这点需要注意,在存储数据库时需要注意。此外,它的执行将由 Unicode 编码。在 re() 中执行常规匹配时,似乎需要 re(u'')。似乎是这样。这还没有完全理解。我在互联网上看到过。将研究 re(r'') 的措辞。. .

  还有一种解析的方法,也是scrapy内置的css选择器。具体选拔文件可在w3cschool查阅。这里有一个选择方法,比如: li:nth-of-type(2) 是选择的第二个li节点

  在使用scrapy的过程中,重点学习了如何抓取动态js加载的页面。现在很多网站在源代码中没有太多信息。主要信息只有从js文件加载后才能在review元素中找到。

  所以现在我们需要一些东西来模拟浏览器,phantomjs是一个强大的模拟浏览器的工具,phantomjs是一个很小的浏览器内核,调用它可以非常方便快捷地进行分析。

  cmd = 'phantomjs constructDom.js "%s"' % response.url

print "cmd:",cmd

stdout,stderr = subprocess.Popen(cmd,shell= True,stdout = subprocess.PIPE,stderr = subprocess.PIPE).communicate()

sel = Selector(text=stdout)

  constructDom.js是一个解析网页的js,这是在网上的一段代码,拿来使用了

  var page = require('webpage').create(),

system = require('system'),

address;

if(system.args.length === 1){

phantom.exit(1);

}else{

address = system.args[1];

page.open(address, function (status){

if(status !== 'success'){

phantom.exit();

}else{

var sc = page.evaluate(function(){

return document.body.innerHTML;

});

window.setTimeout(function (){

console.log(sc);

phantom.exit();

},1000);

}

});

}

  上面四句展示了一个调用过程,这里只是调用了它的接口,我对phantomjs还没有太了解。

  有时候需要让页面停留一段时间以等待加载,这时候得需要js代码sleep一段时间,但是js又没有sleep这个方法,而setTimeOut相当于另起了一个线程,并不能实现所需的sleep功能,下面一段代码可以间接的实现sleep的功能,相当于sleep了1秒钟。

<p>var t = Date.now();

function sleep(d){

while(Date.now - t

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线