文章目录
爬虫基本过程可以分为以下三部:
- 代码访问网址
- 解析返回的HTML
- 保存想要的数据
1. 代码访问网址
python使用Requests库访问网络,爬虫是通过代码模拟人为操作浏览器,所以还得加上请求头header,一般请求头参数就是‘user-agent’,特殊的可能需要auth、cookies等信息。有时还需要在每次访问中间停顿几秒,防止频繁访问导致账号被封禁。requests中文文档
基本使用
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
res = requests.get('http://www.baidu.com', headers=headers)
print(res.text) # 打印返回的网页源码内容
常用属性
属性 | 含义 |
---|---|
res.status_code | 请求的响应状态码,200表示请求成功 |
res.text | 响应内容的字符串形式,即返回的页面内容 |
res.encoding | 从requests header 中推测的内容编码方式 |
res.content | 响应内容的二进制形式 |
res.json() | 得到对应的 json 格式的数据 |
2. 解析HTML文件
BeautifulSoup
BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。BeautifulSoup中文文档
举例使用
from bs4 import BeautifulSoup
import requests
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
res = requests.get('http://www.baidu.com', headers=headers)
soup = BeautifulSoup(res.text, 'html.parser') #得到BeautifulSoup对象
print(soup.prettify()) # 美化打印出来,变成浏览器中源码排列
# select用法
lists = soup.select('#s-top-left>a') #得到标签对应集合
for list in lists:
print(list)
print(list.get('href'),list['href'],list.get_text())
# find用法
lists = soup.find('a',