python抓取动态网页(python爬取js执行后输出的解决方案(一))

优采云 发布时间: 2021-09-23 18:11

  python抓取动态网页(python爬取js执行后输出的解决方案(一))

  Python有许多库让我们轻松编写网络爬行动物,爬上某些页面,得到宝贵的信息!但在许多情况下,要采取爬行动物页面只是一个静态页面,该页面的源代码,如浏览器中的“查看页面源”。一些动态的东西,例如在JavaScript脚本之后生成的信息,这里可以用于提供这样的程序,可用于Python爬行JS执行输出的信息。

  1.两个基本解决方案

  1. 1带有dryscrape库动态抓取页

  js脚本由浏览器执行并返回信息,因此抓住了JS执行后的页面,以及最直接的方式是使用Python模拟浏览器的行为。 WebKit是一个开源浏览器引擎,Python提供了许多文库来调用此引擎,Dryscrape是其中之一,它调用WebKit引擎来处理收录JS的网页!

  1 importdryscrape2#使用dryscrape数据库动态捕获页面

  3 defget_url_dynamic(URL):4 session_req = dryscrape.session()5 session_req.visit(url)#请求页

  6 response = session_req.body()#网网文

  7 #print(响应)

  8 return response9 get_text_line(get_url_dynamic(url))#将输出文本

  这也适用于收录JS的剩余网页!虽然它可以满足动态页面的要求,但缺点仍然非常明显:慢!太慢,实际上思考它合理地,python调用webkit请求页面,而其他页面被加载,加载js文件,让js执行,返回执行页面,慢慢慢!有许多图书馆可以调用webkit:pythonwebkit,pygebkitgit,pygt(你可以编写浏览器),睡衣等,我听说他们也可以实现相同的功能!

  1. 2硒网测试框架

  Selenium是一个Web测试框架,允许呼叫呼叫本地浏览器引擎发送Web请求,因此它也可以达到捕获页面的要求。

  #使用selenium webdriver,但实时打开浏览器窗口

  1 defget_url_dynamic2(URL):2驱动程序= webdriver.firefox()#coll uncoup firefox浏览器,甚至可以

  3 driver.get(url)#请求页面,打开浏览器窗口

  4 html_text = driver.page_source5 driver.quit()6 #print html_text

  7 returnhtml_text8 get_text_line(get_url_dynamic2(url))#out文本

  这不是临时解决方案!还有一个与硒类似的硒的风车,这稍微复杂,然后再去!

  2. selenium安装和使用

  2. 1硒安装

  在Ubuntu上安装可以直接使用pip安装selenium。由于以下原因:

  1. selenium 3. x start,webdriver / firefox / webdriver.py __init__,secututable_path =“geckodriver”; 2. x是可执行文件_path =“线”

  2. firefox 47或以上,您需要下载第三方驱动程序,哪个geckodriver

  需要一些特殊操作:

  1.下载geckodriverckod地址:mozilla / geckodriver

  2.装装置go o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o up下载/ geckodriver / usr / local / bin /

  2. 2 selenium的使用

  1.运行错误:

  驱动程序= webdriver.chrome()

  typeerror:'模块'对象不是可调用的

  解决方案:浏览器的名称需要大写Chrome和Firefox,即

  2.通过

  1 content = driver.find_element_by_class_name('content')

  当元素定位时,该方法返回FirefoxWebElement,并且当您想要获取收录的值时,可以通过

  1值= content.text

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线