htmlunit抓取动态网页( :我输入一个之前从来没搜索过的型号却没有数据返回)

优采云 发布时间: 2022-04-11 14:23

  htmlunit抓取动态网页(

:我输入一个之前从来没搜索过的型号却没有数据返回)

  

  问题

  - - - - - - - - - - - - - 更新 - - - - - - - - - - - - ------

  谢谢你的想法。我想通过分析网页的交互是否可以找到方法。我仔细查看了elements中的网页代码,发现搜索结果是通过AJAX返回的一个链接的内容,即()我用python爬取这个链接可以从中得到我想要的。但是我又遇到了一个问题:我在浏览器中搜索过设备型号,比如SC1894,python可以通过上面的链接爬取内容(浏览器也可以直接进入这个getup链接)。如果我输入一个以前从未搜索过的模型并且没有返回数据怎么办?在此之前我错过了什么吗?

  ----------------------原来的问题-------------- ---

  最近在学习爬取动态网页,想咨询一下:

  对比chrome F12的元素,我用下面的代码抓取的网页内容缺少了我想要的内容,比如

  搜索结果后,我在网上搜索了内容。看来我有时间使用 JavaScript。我需要怎么做才能抓住它?我想征求意见。

  import urllib.request

weburl = 'http://search.ickey.cn/?keyword=SC1894&num='

webheader = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}

req = urllib.request.Request(url = weburl, headers = webheader)

webPage = urllib.request.urlopen(req)

data = webPage.read()

data = data.decode('UTF-8')

print(data)

  解决方案

  网页是动态生成的。在爬取页面数据之前,思路应该是想办法获取动态生成的网页内容。如果你想这样做,你可以使用 PhantomJS 先加载相应的网页,然后再加载。然后把好的内容扔给 Python,然后 Python 开始解析。

  补充:

  其实每个网站的爬取规则都不一样。如果你不使用无头浏览器(我上面提到的方法),那么在分析API的时候,一定要看清楚API请求当时收录的参数(最基础的),请求方法,是否携带一些具体的http标头等。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线