python爬虫-动态网站爬取

对于某些静态网站,只要requests.get(‘url')即可获得页面全部内容,如链家使用pg代表页面、rs代表关键字,https://sh.lianjia.com/ershoufang/pg2rs%E8%99%B9%E5%8F%A3/

但对于一些动态加载的网页,则不可以直接通过get url的方式获取到网页内容

一、Ajax

Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。

jax技术的核心是XMLHttpRequest对象(简称XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。XHR为向服务器发送请求和解析服务器响应提供了流畅的接口,能够以异步方式从服务器取得更多信息,意味着用户单击后,可以不必刷新页面也能取得新数据

二、查看网页实际信息

点击 元素检查-network-XRH(火狐有时候会在JS里)

如,QQ音乐中查看歌名列表,

三、使用爬虫爬取信息

找到的真正的请求信息(请求网址、提交的表单)后,在scrapy中只要如下代码便可实现爬取,请求方式post或者get视网站情况而定

def start_requests(self):
        try:
            ses = requests.session()  # 获取session
            ses.get(url=self.url, headers=self.headers)
            cookie_start = ses.cookies  # 为此次获取的cookies
            cookie_start=requests.utils.dict_from_cookiejar(cookie_start)
            # print("page:{}    首页cookie获取suc...".format(self.pn))
        except:
            print("page:{}    首页cookie获取异常...".format(self.pn ))
        yield scrapy.FormRequest(url=self.url_start
                                 , formdata={'first': 'True', 'pn': str(self.pn), 'kd':self.kd}
                                 , method='Post'
                                 , headers=self.headers
                                 , cookies=cookie_start
                                 , encoding='utf-8'
                                 , dont_filter=True
                                 , meta={'pn': str(self.pn),'kd': self.kd}
                                 , callback=self.parse
                                 )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值