网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。
爬虫不需要精通python,但爬虫的原理与python的基础知识是需要掌握的,请看爬虫的流程:
当我们获取了数据就可以对数据进行操作分析,应用于其他的方面。
以下是我学习的第一个爬虫案例附加代码:
我们爬的是百度贴吧的数据
第一个案例爬贴吧数据我们只用到了requests库,需要分析页面用到的BeautiSoup库等在后续的案例中讲解。
requests是python的HTTP库,它是第三方库,在使用之前我们需要cmd安装
pip install requests
安装成功后我们只需要在python代码中import以下就可以
import requests
基本用法如下:
import requests
response = requests.get('http://www.baidu.com')
print(response.status_code) # 打印状态码
print(response.url) # 打印请求url
print(response.headers) # 打印头信息
print(response.cookies) # 打印cookie信息
print(response.text) #以文本形式打印网页源码
print(response.content) #以字节流形式打印
运行 结果:
状态码:200
url:www.baidu.com
其他的读者可以亲自试试,看一下具体内容
1.基本的get请求
import requests
response = requests.get('http://www.baidu.com')
print(response.text)
打印出的结果:
带参数的请求
可以在get方法中加入headers参数
import requests
heads = {}
heads['User-Agent'] = 'Mozilla/5.0 ' \
'(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' \
'(KHTML, like Gecko) Version/5.1 Safari/534.50'
response = requests.get('http://www.baidu.com',headers=headers)
2.基本的POST请求
可以在data中加入数据,发送请求时一并携带着发送
import requests
data = {'name':'tom','age':'22'}
response = requests.post('http://httpbin.org/post', data=data)
3.案例:百度贴吧爬虫并讲数据保存
思路:
#1.构造url列表
#2.遍历url,发送请求,获取响应
#3.保存
实现:
(1)定义一个运行函数run(self)
其中实现主逻辑
伪代码如下:
def run(self):#实现主要逻辑
#1.构造url列表
#2.遍历,发送请求,获取响应
#3.保存
(2) 构造run(self)运行函数中各个需要的函数
1.构造url列表函数
def get_url_list(self):#1.构造url列表
url_list = []
for i in range(1000):
url_list.append(self.url_temp.format(i*50))
return url_list
2.遍历,请求,响应函数
def parse_url(self,url):#发送请求获取响应
print(url)
response = requests.get(url,headers=self.headers)
return response.content.decode()
3.保存数据函数
def save_html(self,html_str,page_num):
file_path = "{}-第{}页.html".format(self.teiba_name,page_num)
with open(file_path,"w",encoding="utf-8") as f:
f.write(html_str)
以上为案例的主要逻辑以及实现各个模块的代码
完整代码:
import requests
class Tieba_spider:
def __init__(self,tieba_name):
self.teiba_name = tieba_name
self.url_temp = "https://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn={}"
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
}
def get_url_list(self):#1.构造url列表
url_list = []
for i in range(1000):
url_list.append(self.url_temp.format(i*50))
return url_list
def parse_url(self,url):#发送请求获取响应
print(url)
response = requests.get(url,headers=self.headers)
return response.content.decode()
def save_html(self,html_str,page_num):
file_path = "{}-第{}页.html".format(self.teiba_name,page_num)
with open(file_path,"w",encoding="utf-8") as f:
f.write(html_str)
def run(self):#实现主要逻辑
#1.构造url列表
url_list = self.get_url_list()
#2.遍历,发送请求,获取响应
for url in url_list:
html_str = self.parse_url(url)
#3.保存
page_num = url_list.index(url)+1
self.save_html(html_str,page_num=page_num)
if __name__ == '__main__':
tieba_spider = Tieba_spider.run("LOL")
tieba_spider.run()
本人初学者,欢迎多多指教!!!