htmlunit抓取动态网页( :我输入一个之前从来没搜索过的型号却没有数据返回)
优采云 发布时间: 2022-04-11 14:23htmlunit抓取动态网页(
:我输入一个之前从来没搜索过的型号却没有数据返回)
问题
- - - - - - - - - - - - - 更新 - - - - - - - - - - - - ------
谢谢你的想法。我想通过分析网页的交互是否可以找到方法。我仔细查看了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标头等。