1. 前沿创业网首页
  2. 投稿

爬虫软件是干什么的(简单聊一聊爬虫这个东西)

提到爬虫这个东西,很多人很陌生,但对于程序界的或多或少听过。

爬虫言简意赅就是从网站上爬取有用的信息,进行分析,提取有用的价值

那么怎么去爬取信息呢,我们会用到一个攻击python,当然还有其他的工具,我们今天只介绍其一:python

这是爬取的效果

爬虫软件是干什么的(简单聊一聊爬虫这个东西)-1

这是个强大的语言,著名的语句叫做:人生苦短,我学python。

下面来给你讲解下如何精确地爬取某个网站的排行信息。

我们会用到一个开发工具,pycharm

步骤1 获取排行榜地址

这个自行去网上查找把

步骤2 准备python环境

以pycharm开发工具为例

1.准备个纯净版的py文件

我们需要引入的库有bs4、re、request、xlwt、sqlite3

bs4:*它提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能,可以用来解析文档,网页等*

re: 用于正则表达式

request:用于网页请求等

xlwt:用于表格操作

sqlite3:用于数据库操作

完事具备:开始撸代码

1.先定义个请求网页的方法

“`python

def askUrl():

head = {

“user-agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ”

“Chrome/98.0.4758.82 Safari/537.36 ”

}

# 请求网页并带有头部信息,模拟真实环境

request = urllib.request.Request(biliTopUrl, headers=head)

html = “”

try:

response = urllib.request.urlopen(request)

html = response.read().decode(“utf-8”)

# print(html)

except urllib.error.URLError as e:

print(e)

return html

备注:每个人浏览器不通,可以自行修改下user-agent的内容,也可不修改

“`

2.获取数据并解析

“`python

# 需要爬取的是标题、up主、播放量、弹幕书

findTitle = re.compile(r'<a .* target=”_blank”>(.*?)</a>’)

findUp = re.compile(r'<img alt=”up” .*/>(.*)</span></a>’, re.S)

findPlayCount = re.compile(r'<img alt=”play” .*/>(.*)</span> <span >’, re.S)

findBarrages = re.compile(r'<img alt=”like” .*/>(.*)</span></div></div></div> <!– –></div>’, re.S)

备注:上诉爬取的内容,根据自己的情况,用F12开发者模式进行提取。正则表达式过滤,

def getData():

# 定义一个dataList用于封装

dataList = []

# 访问页面

html = askUrl()

# 逐一解析数据

soup = BeautifulSoup(html, “html.parser”)

for item in soup.findAll(‘div’, class_=”content”): # 查找符合要求的字符串 ,形成列表

data = []

item = str(item)

title = re.findall(findTitle, item)[0]

data.append(title)

up = re.findall(findUp, item)[0]

data.append(up.strip())

playCount = re.findall(findPlayCount, item)[0]

data.append(playCount.strip())

barrages = re.findall(findBarrages, item)

if len(barrages) == 0:

data.append(” “)

else:

data.append(barrages[0].strip())

dataList.append(data)

print(dataList)

return dataList

获取到的dataList后续在存储用

“`

3.存储到Excel

“`python

def saveExcel(dataList):

# 定义Excel的表格

workBook = xlwt.Workbook(encoding=”utf-8″, style_compression=0)

# 定义sheet页

workSheet = workBook.add_sheet(“某站排行榜”, cell_overwrite_ok=True)

# 定义一个列表元组

cols = (“标题”, “XX主”, “播放量”, “弹幕数”)

for i in range(0, 4):

workSheet.write(0, i, cols[i]) # 输入列名

for i in range(0, len(dataList)):

data = dataList[i]

for j in range(0, 4):

workSheet.write(i + 1, j, data[j]) # 内容添加

workBook.save(“某站排行榜.xlsx”)

print(“插入Excel表成功”)

“`

4.存储到数据库

“`python

说明:python3 定义数据库,如果没有数据库则会自动创建,创建在当前项目目录下,可直接双击在右侧栏查看到

def saveDB(dataList):

initDB()

conn = sqlite3.connect(dbName)

cur = conn.cursor()

for data in dataList:

# 获取下标

for index in range(len(data)):

data[index] = ‘”‘ + data[index] + ‘”‘ # 数据库插入需要加上单引号

sql = ”’

insert into biliTop(title, upName, playCount, barrages)

values(%s)

”’ % “,”.join(data) # 将字符以,进行拼接

print(sql)

cur.execute(sql)

conn.commit()

cur.close()

conn.close()

print(“插入数据库结束”)

dbName = “hoholi”

def initDB():

sql = ”’

drop table if exists biliTop;

create table dddddTop(

id integer primary key autoincrement,

title text,

upName varchar,

playCount varchar,

barrages varchar

)

”’

conn = sqlite3.connect(dbName)

cur = conn.cursor()

cur.executescript(sql)

conn.commit() # 记得要提交如果是更新的,如果只是查询类的,可以不用

cur.close()

conn.close()

特别注意:更新数据记得commit,如果是查询不需要

“`

依赖库:

“`python

from bs4 import BeautifulSoup

import re # 正则表达式

import urllib.request, urllib.error # 制定URL,获取网页数据

import xlwt # 进行excel操作

import sqlite3 # 进行SQLite数据库操作

“`

重点:我们的运行一般是通过main方法运行的,特别强调,if __name__ == “__main__”:定义一定要放在最底下,代码不能放在其他函数之上,否则会找不到。

“`python

hhahahaTopUrl = ‘https://www.hahhahaha.com/v/popular/rank/all’

def main():

dataLists = getData()

saveExcel(dataLists)

saveDB(dataLists)

if __name__ == “__main__”:

main()

“`

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至87172970@qq.com举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论