爬虫的仨步骤
1.爬取网页
2.数据提取/保存
3.预处理
需求:运用requests实现百度贴吧自定义获取指定页面
任意打开一个吧
https://tieba.baidu.com/f?kw=python&ie=utf-8&pn=50
关键在于找到数据的接口
多翻几页分析发现最后得url
url = 'https://tieba.baidu.com/f?kw=' + 搜索内容 + '&pn=' + 页码'
且这个页码n pn = 50*(n-1)
这个简单代码如下
import requests
def search(url, kw, page):
'''
:param url: 爬虫url
:param kw: 搜索吧名
:param page: 搜索的页码
:return: 无
'''
response = requests.get(url)
content = response.content.decode('utf-8')
html = kw + "第" + str(page) + "页" + ".html"
with open(html, 'w', encoding='utf-8') as f:
f.write(content)
if __name__ == '__main__':
while True:
kw = input("请输入要搜索的贴吧:")
page = int(input("请输入要搜索的页码:"))
pn = str(50 * (page - 1))
url = 'https://tieba.baidu.com/f?kw=' + kw + '&pn=' + pn
search(url, kw, page)
Q = input("输入Q开始搜索并退出,任意字符继续搜索:")
if Q == "Q":
break
伪装成浏览器,可以直接复制当前浏览器的User-Agent,也可以如下随机生成
from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent': ua.random}
编码方法一般使用utf-8,若不成可以改为gbk,或者直接获取response.encoding
try:
response.content.decode('utf-8')
except:
response.content.decode('gbk')
当然也可以增加代理https://www.xicidaili.com/nn/
免费代理ip网站
import requests
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
requests.get(url, proxies=proxies)