动态网页抓取(动态加载的网页不可以直接通过geturl的方式获取到网页内容 )

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

  动态网页抓取(动态加载的网页不可以直接通过geturl的方式获取到网页内容

)

  对于一些静态的网站,只要requests.get('url')就可以得到页面的所有内容,比如链家用pg做页面,rs做关键字,%E8%99%B9 %E5%8F%A3 /

  但是对于一些动态加载的网页,不能直接通过get url获取网页内容

  一、阿贾克斯

  Ajax 代表“AsynchronousJavascriptAndXML”(异步 JavaScript 和 XML),是指一种网页开发技术,可以创建交互式、快速和动态的网页应用程序,并且可以在不重新加载整个网页的情况下更新某些网页。

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

  二、查看网页上的实际信息

  点击元素勾选-network-XRH(Firefox有时在JS中)

  

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

  

  三、 使用爬虫爬取信息

  

  找到真实的请求信息(请求URL、提交的表单)后,在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

)

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线