目录
前言
爬虫在开发过程中也有很多复用的过程,今天跟大家分享五个常用的技巧。
一、请求网页方法
python 请求网页一般会使用 requests 这个库,正如其介绍的那样:built for human beings。相当的通俗易懂,简单易用。
import requests
# get 请求
r = requests.get(url)
# 带参数
payload = {
'key': 'value'
}
r = requests.get(url, params=payload)
# post 请求
r = requests.post(url)
# 带 form 参数
form_data = {
'key': 'value'
}
r = requests.post(url, data=form_data)
# 带 json 参数
json_data = {
'key': 'value'
}
r = requests.post(url, json=json_data)
二、伪装浏览器与串改请求头
其实伪装浏览器的本质就是修改请求头(request header),来让服务器难以辨别请求是来自爬虫还是真实用户的浏览器。通常设置 User-Agent 即可应对大部分网站。
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
}
r = request.get(url, headers=headers)
三、获取和设置 Cookies
这里就涉及到 requests 发送请求后的返回值了,也就是上面例子中的 r。用户存储在浏览器的 Cookies 通常是浏览器根据返回头(response header)中的 Set-Cookie 的值来设置的,在 python 中这样获取:
r = request.get(url)
cookie = r.headers.get('set-cookie').split(';')[0].strip()
四、取消自动重定向
nodejs 的技巧文章中解释过,自动重定向可能会使用不正确的 Cookie 导致结果永远不对,因此有时需要取消这个功能
r = requests.get(url, allow_redirects=False)
五、页面解析
可以使用 beautifulsoup:
from bs4 import BeautifulSoup
r = requests.get(url)
# 这个 html.parser 是解析器,你也可以设置其他的,比如:lxml,如果你要解析 XML 文档,那么你就要把它设置为:lxml-xml。当然使用前要安装 lxml。
soup = BeautifulSoup(r.text, 'html.parser')
# 例:找到并打印页面中的所有超链接
for item in soup.find_all('a'):
print('{} - {}'.format(item.get_text(), item.get('href')))
总结
以上就是一些常用的爬虫技巧总结,大家学习掌握后以后也能省些事情。