目录
一. 获取网页源代码
1. 四行代码获取(有时不灵)
首先通过最简单的四行代码来尝试一下获取百度新闻的网页源代码:
import requests # 导入requests库
url = 'https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=阿里巴巴' # 输入网址
res = requests.get(url).text # 发送请求获取网页
print(res) # 输出网页源码
获取到的源码如下图所示:
可以看到我们并没有真正获取到百度新闻的网页源代码,这是因为百度的资讯网站只同意浏览器发送的访问,不同意直接通过python发送的访问请求。这时我们就需要设置 requests.get()中headers参数,用来模拟浏览器进行访问。
2. 五行代码获取(常用方法)
Headers参数记录的其实就是网站访问者的信息,代表这个访问的浏览器是哪家的浏览器,headers中的User-agent(中文叫作用户代理)就是反映是用什么浏览器登录的,其设置方式如下所示:(这里就是Chrome浏览器的User-Agent)
通过设定代理,可以爬取一些通过我们网络ip无法访问的网站。还有一些比较成熟的网站,如微博、豆瓣,它们会有非常高超的爬虫检测技术,这时我们就不能爬取它们的网站上的数据。 代理服务器的存在,可以应对网站禁止某个IP访问的反爬虫措施,代理服务器有着不同的匿名类型,通常我们会挑选中、高级别的代理服务器来访问网页。
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}
设置完headers之后,在通过requests.get()请求的时候需要加上headers信息,这样就能模拟一个浏览器来访问网站,网站是可以识别我们是否在使用Python进行爬取,需要我们在发送网络请求时,把header部分伪装成浏览器。代码如下:
res = requests.get(url, headers=headers).text
完整代码如下:
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'} # 用户代理设置
url = 'https://www.baidu.com/s?tn=news&rtt=1&bsst=1&cl=2&wd=阿里巴巴'
res = requests.get(url, headers=headers).text # 使用浏览器的用户代理向网站发送访问请求
print(res)
运行结