建筑兔零基础自学记录73|爬虫实战购物网站-4

先来尝试一下爬取京东的网站,网页信息如下:

爬取代码1

import requests
url='https://item.jd.com/2967929.html'

try:
  r=requests.get(url)
  r.raise_for_status()    #如果状态不是200,引发HTTPError异常
  r.encoding=r.apparent_encoding
  print(r.text[:1000])
except:
  print ("爬取失败")

可以看到只爬取到了head标题信息,没有爬取到网页的实质内容

当我们换一个网站的时候,会发现出现了部分网页信息

http://www.rj-jwb.com.cn/spiderbook/chapter5/

原始网页如下:

 继续尝试爬取亚马逊https://www.amazon.cn/gp/product/B01M8L5Z3Y

结果爬取失败,这个需要用到其他知识。后续再学。

查询一下headers发现爬虫如实的向网页汇报了是python提出的申请

import requests
url='https://item.jd.com/2967929.html'

try:
  r=requests.get(url)
  r.raise_for_status()    #如果状态不是200,引发HTTPError异常
  r.encoding=r.apparent_encoding
  print("发送的请求头:", r.request.headers)
  print(r.text[:1000])
except:
  print ("爬取失败")

☆☆爬取代码2(请求头模拟浏览器)

 如果我们能模拟浏览器,应该可以绕过网站限制。这里Mozilla/5.0是代表chrome、firefox等浏览器的通用写法。这是用构建键值对 kv={'user-agent':'Mozilla/5.0'}的方法

import requests
url='https://item.jd.com/2967929.html'

try:
    kv={'user-agent':'Mozilla/5.0'}
    r=requests.get(url,headers=kv)
    r.raise_for_status()    
    r.encoding=r.apparent_encoding
    print(r.status_code)
    print("发送的请求头:", r.request.headers)
    print(r.text[1000:2000])
except:
    print ("爬取失败")

这次我们尝试了爬取网站的内容,但是有时会遇到请求失败。本次主要学到了用构建键值对请求头模拟浏览器的方法可以更改提交给网页的信息。

这就是上次学到requests的参数headers的作用~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值