一、为什么使用函数:
python爬虫中使用函数是为了提高编写代码的效率,把具有特定功能的相关代码组成一个小模块。
使用实例例如:1.获取一级页面中标签里面中url、请求参数信息
2.获取页面中想要爬取的内容信息
相关搭配: 1.获取参数函数与获取内容函数进行嵌套
2.获取多页网页信息进行递归调用
3.多线程爬取时,封装函数是必要的
二、函数定义:
格式: def 函数名 (参数1,参数2,参数....):
函数体
(return 返回值)
#无参构建——没有返回值
def sayHello():
print('hello word')
#无参构建——又返回值
def returnNumber():
return 1
#有参构建——无返回值
def sayName(name):
print('hello',name,sep='|')
#有参构建——有返回值
def mergeStr(str1,str2):
return str1+str2
if __name__=='__main__':
print('第一个函数:',end=' ')
sayHello()
print('第二个函数:',returnNumber())
print('第三个函数:',end=' ')
sayName('小明')
print('第四个函数:',mergeStr('摸金','校尉'))
三、函数实例:
(一)获取网页相关内容函数
#封装思路
#爬虫里面封装函数,提供相关思路,此代码里面有爬取的瑕疵
#1.首先导入模块
#2.定义函数声明
#3.if __name__=='__main__':相当于主函数使用
from bs4 import BeautifulSoup
import requests
import time
def getData(your_url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36',
'Host': 'www.222biquge.com',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Cookie': 'ckAC=1; Hm_lvt_e1880e6cb1c4b425fe63ef614765e9ec=1694943134,1695103196; width=85%25; Hm_lpvt_e1880e6cb1c4b425fe63ef614765e9ec=1695104708; __gads=ID=fdfbb2c2fc6d8266-222da8e5e3e3009f:T=1695104707:RT=1695104707:S=ALNI_MbBKmyOiE0rr-z9yI5R0SE_YUe2pQ; __gpi=UID=00000c4b8769dfe5:T=1695104707:RT=1695104707:S=ALNI_Makuto0k-PH61jsK4RcY1DN83cXng',
}
response=requests.get(url=your_url,headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
titles = soup.select('.bookname>h1')
# print(titles[0])____________________ <h1> 第一章?旧土</h1>
tuijians = soup.select('.bookname>.lm>a')
print(tuijians)
#主函数里面简洁明了
if __name__=='__main__':
urls=[f'http://www.222biquge.com/148_148106/17812{page}.html'for page in range(1,1000)]
for single_url in urls:
#调用函数
getData(single_url)
(二)后续讲解嵌套函数和递归函数
四、补充知识点:
获取网页相关标签:
1.Beautiful库及方法
2.parsal库及方法
(一)Beautiful实例:
官方文档:Beautiful Soup 4.4.0 文档 — Beautiful Soup 4.2.0 中文 文档
from bs4 import BeautifulSoup
import requests
#获取到title列表
response=requests.get(url=your_url,headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
titles = soup.select('.bookname>h1')
(二)Parsel实例:
官方文档:parsel.selector — Scrapy 2.5.0 文档
import requests
import parsel
#使用parsel进行css语法提取titles列表
selector=parsel.Selector(response.text)
titles=selector.css('.bookname>li')
print(titles)
本次讲解了函数相关知识和补充的beautiful、parsel库知识,后续发布的代码主要偏向于这两种方法进行内容爬取,各位爬虫爱好者们,咋们还是得冲冲冲!!!