爬取的几个基本入门程序

京东商品:https://item.jd.com/100005603...
先试试下面这个代码:

import requests
url = 'https://item.jd.com/100005603522.html'
try:
    r = requests.get(url)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
    print(r.text[:1000])
except:
    print('爬取失败')

亚马逊商品:
先按京东的这个方法来试一下

>>> r = requests.get('https://www.amazon.cn/dp/B076SRZY65/ref=sr_1_1?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&keywords=%E7%BA%A2%E6%A5%BC%E6%A2%A6&qid=1581427290&sr=8-1')
>>> r.status_code
503

我们看到返回的状态码是503,说明服务器拒绝了我们的访问。
我们看看到底是哪里出了问题,首先改变一下返回数据的编码。

>>> r.encoding
'ISO-8859-1'
>>> r.encoding = r.apparent_encoding
>>> r.text

抱歉,我们只是想确认一下当前访问者并非自动程序。为了达到最佳效果,请确保您浏览器上的 Cookie 已启用。

到这里,我们已经知道,服务器知道了我们是用程序访问,所以拒绝了。
我们知道,Response对象包含了我们发送的请求的全部信息,现在看看我们发送的请求的头部信息是什么样的。

>>> r.request.headers
{'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

我们的程序,忠实地告诉了服务器,这个请求是由Python的requests库进行访问的,所以被拒绝了。下面我们重新构造一个头部信息,模拟成浏览器再访问一次。

kv = {'User-Agent': 'Mozilla/5.0'}
>>> r = requests.get('https://www.amazon.cn/dp/B076SRZY65/ref=sr_1_1?__mk_zh_CN=%E4%BA%9A%E9%A9%AC%E9%80%8A%E7%BD%91%E7%AB%99&keywords=%E7%BA%A2%E6%A5%BC%E6%A2%A6&qid=1581427290&sr=8-1',headers=kv)
>>> r.status_code
200
>>> r.request.headers
{'User-Agent': 'Mozilla/5.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
>>> r.text[:1000]
'\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    \n\n    \n\n\n\n\n\n\n\n\n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n\n\n    \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n    \n\n\n\n\n\n    \n    \n\n
                    
                    

你可能感兴趣的:(网页爬虫,图片,商品表,搜索)