想必大家都了解爬虫,也就是爬取网页你所需要的信息
相比于网页繁多的爬虫教程,本篇主要将爬虫分为四个部分,以便你清楚,代码的功能以及使用,这四部分分别为
1.获取到源代码
2.根据网页中的标签特征,获取源代码你所需要的部分
3.想一下如何根据页面的逻辑将一系列的网页自动化抓取
4.保存数据在xlsx等格式下
接下来说一下每一步的操作
1.获取源代码
现在有很多库来获取,不过现在普遍使用的是requests,我也是用它
导入方式为
import requests
这一部分很简单就一行代码
response = requests.get(url, params = params , headers = headers)
url就是页面的url,网址
params就是查询参数,可选
headers就是页面的请求头,也是可选,不过现在可以必过简易的反爬,主要要有user_agent和cookies
2.根据网页特征获取
这里我用到了BeautifulSoup
导入方式为
from bs4 import BeautifulSoup
具体使用就是
soup = BeautifulSoup(directory, 'html.parser')
其中'html.parser',它是 Python 内置的解析器,用于解析普通的 HTML 文档。
作用为:首先将html 变量中的 HTML 内容解析为一个 BeautifulSoup 对象 soup,使得后续可以利用 BeautifulSoup 提供的方法来方便地遍历和操作 HTML 文档的各个部分。
至于筛选标签,我主要我是使用了BeautifulSoup中的find和find_all两个函数,是用于查找符合指定标签名和属性条件的元素,这两个函数是有一定的区别的。
find用于查找文档中符合指定条件的第一个元素
find_all用于查找文档中符合条件的所有元素,并返回一个列表
举个例子
first_span = soup.find('span', class_='fl')
这里用find方法查找了第一个 标签,且其 class 属性为 'fl'。
span_list = soup.find_all('span', class_='fl')
这里用find_all 方法查找了所有 标签,且其 class 属性为 'fl' 的元素,将它们存储在 span_list 列表中。
3.自动化抓取
这一部分,得具体网页具体分析了
如一些页面的选择上,如?p=s这一些逻辑,将其写入脚本中,以实现自动化
https://www.xxx.html?p=s
4.保存数据
这部分用到了openpyxl库
导入方式:
from openpyxl import Workbook
首先看一下一下的代码
def create_execl(name):
wb = Workbook()
ws = wb.active
ws.title = name
excel_headers = ["疾病信息", "问诊类型", "病例url", "医生url", "医生简介", "医生擅长", "医生服务质量", "医生建议", "医生与患者交流"]
ws.append(excel_headers)
wb.save(name+".xlsx")
def write_back_execl(data, name):
wb = load_workbook(name+".xlsx")
ws = wb.active
ws.append(data)
wb.save(name+".xlsx")
然后我来对大家逐行解析
首先函数create_excel(name)是创建一个名为 name的Excel 文件,并写入表头信息。
1.wb = Workbook():创建一个新的 Workbook 对象,即一个新的 Excel 文件。
2.ws = wb.active:获取当前活动的工作表对象,这是一个 Worksheet 对象。
3.ws.title = name:将当前工作表的名称设置为传入的 name 参数。
4.excel_headers:定义了 Excel 表头的字段,包括 "疾病信息"、"问诊类型" 等。
5.ws.append(excel_headers):将表头信息添加到第一行。
6.wb.save(name+".xlsx"):保存 Excel 文件,文件名为 name.xlsx,这里的 name 是函数的参数。
函数write_back_excel(data, name),是用于向已存在的 Excel 文件中写入数据。
1.wb = load_workbook(name+".xlsx"):使用 load_workbook 函数加载已存在的 Excel 文件,文件名为 name.xlsx。
2.ws = wb.active:获取当前活动的工作表对象。
3.ws.append(data):将数据 data 追加到当前工作表的最后一行。
4.wb.save(name+".xlsx"):保存修改后的 Excel 文件。
反爬
除了基础代码外,我们还得了解一些反爬的技术
1.构造请求头
2.设置爬取时间间隙
3.多设立几个账号
等
以上爬虫简易思路,希望对你们有帮助