ajax - 爬虫抓取动态网页

查看:109
本文介绍了ajax - 爬虫抓取动态网页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

--------------------------更新-----------------------------
谢谢大家提供的思路,想着先通过分析网页交互能不能找到方法,我又仔细看了看elements里的网页代码,发现搜索结果是通过AJAX返回一个链接的内容,即(http://search.ickey.cn/site/g...)我用python抓取这个链接可以从中得到我想要的内容。但是又碰到了另一个问题:我在浏览器里已经搜索过的器件型号,例如SC1894,python通过上述链接可以抓取到内容(浏览器直接输入这个getsup链接也可以)。要是我输入一个之前从来没搜索过的型号却没有数据返回?是不是在此之前还有什么我遗漏的东西呢

-------------------------原问题---------------------------
最近在学习爬取动态网页,想咨询一下:
我利用以下代码抓取的网页内容和chrome F12的elements相比少掉了我想要的内容,比如说<div class="search-result" id="searchResult"> 后紧接的搜索结果内容,搜索了一下网上的内容,好像是与javescript有空,需要如何操作才能抓到呢,想请教下思路

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就开始解析。

补充:
其实每个网站的爬取规则都各有不同,如果你不是使用headless的浏览器去做(我上面提到的做法),那在分析API的时候,你就要看清楚API请求的时候包含的参数(最基本),请求方法,是否携带一些特定的http header之类的。

这篇关于ajax - 爬虫抓取动态网页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆