最近对爬虫比较感兴趣,就在csdn上的电子书里找了本爬虫书(Python网络爬虫从入门到实践 第2版)学学看,顺便做下笔记。
注意:我们不管是在学习爬虫或者以后使用爬虫,都要遵守爬虫协议,也就是Robots协议,网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
Python爬虫的流程
- 获取网页就是给一个网址发送请求,该网址会返回整个网页的数据。类似于在浏览器中键入网址并按回车键,然后可以看到网站的整个页面。
- 解析网页就是从整个网页的数据中提取想要的数据。类似于你在页面中想找到产品的价格,价格就是你要提取的数据。
- 存储数据就是把数据存储下来。我们可以存储在csv中,也可以存储在数据库中。
第一个爬虫
获取页面
import requests
link = "https://blog.csdn.net/weixin_43771998/article/details/113807247"
#定义请求头的浏览器代理,伪装成浏览器
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
#请求网页
r = requests.get(link,headers = headers)
print(r.text)
可以通过F12查找自己浏览器Headers里面的属性。
解析页面
import requests
from bs4 import BeautifulSoup
link = "https://blog.csdn.net/weixin_43771998/article/details/113807247"
#定义请求头的浏览器代理,伪装成浏览器
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
#请求网页
r = requests.get(link,headers = headers)
#----------------------------------------------------------------------------------------------------------------------------------------
#使用BeautifulSoup解析
soup = BeautifulSoup(r.text,"html.parser")
title = soup.find("h1",class_= "title-article").text.strip()
print(title)
title = soup.find(“h1”,class_= “title-article”).text.strip()意思是定位到class是“title-article”的h1元素,提取里面的字符串,strip()去除左右空格。
存储数据
import requests
from bs4 import BeautifulSoup
link = "https://blog.csdn.net/weixin_43771998/article/details/113807247"
#定义请求头的浏览器代理,伪装成浏览器
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"}
#请求网页
r = requests.get(link,headers = headers)
#----------------------------------------------------------------------------------------------------------------------------------------
#使用BeautifulSoup解析
soup = BeautifulSoup(r.text,"html.parser")
title = soup.find("h1",class_= "title-article").text.strip()
print(title)
#----------------------------------------------------------------------------------------------------------------------------------------
#打开一个空白的txt,然后使用f.write写入刚刚的字符串title
with open("test.txt","a+") as f:
f.write(title)
txt文件和当前python文件放在同一个文件夹。
查看python文件的存储地址:
import os
print(os.path.abspath('.'))