做外链的网站,商务网站的建设与维护,网站首页布局设计教程,wordpress 无限下拉菜单1.基本理论
1.1概念体系 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等#xff0c;可以按照我们设置的规则自动化爬取网络上的信息#xff0c;这些规则被称为爬虫算法。是一种自动化程序#xff0c;用于从互联网上抓取数据。爬虫通过模拟浏览器的行为#xff0c;访问网页…1.基本理论
1.1概念体系 网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等可以按照我们设置的规则自动化爬取网络上的信息这些规则被称为爬虫算法。是一种自动化程序用于从互联网上抓取数据。爬虫通过模拟浏览器的行为访问网页并提取信息。这些信息可以是结构化的数据如表格数据也可以是非结构化的文本。爬虫任务的执行流程通常包括发送HTTP请求、解析HTML文档、提取所需数据等步骤。
1.2技术体系 1请求库:用于向目标网站发送HTTP请求。常用的请求库包括requests、httplib、urllib等。这些库可以帮助我们模拟浏览器行为发送GET、POST等请求并处理响应内容。 2.解析库用于解析HTML或XML文档提取出我们需要的数据。常用的解析库包括BeautifulSoup、lxml、pyquery等。这些库可以帮助我们根据HTML文档的结构和标签提取出我们需要的数据。 3.存储库用于将爬取到的数据存储到本地或数据库中。常用的存储库包括sqlite3、mysql-connector-python、pymongo等。这些库可以帮助我们将数据存储到关系型数据库或非关系型数据库中以便后续分析和利用。
2.代码编写流程 代码编写流程 代码共分为3部分1网页地址规律函数。2网页数据解析3数据存储。
2.1.网页地址规律 第一页
网页地址图书畅销榜-近24小时畅销书排行榜-当当畅销图书排行榜 第二页
网页地址第2页_图书畅销榜-近24小时畅销书排行榜-当当畅销图书排行榜
对上面地址分析发现地址中后面数字发生改变第一页位数为1第二页位数为2
依次类推。
编写翻页函数 函数中number为页面地址位数
2.2.页面解析 2.3.网页数据保存
·
3.应用举例 该代码对获取数据进行列表切片处理由于爬虫数据都是字符串数据对排名,评论数转化为整数型数据推荐数转化为浮点型数据, 网页存在些书籍无电子书价格编写函数处理该问题对电子书字段进行查询无该字段返回-1
4.编写代码
import requests
from openpyxl import Workbook,load_workbook
import requests
from bs4 import BeautifulSoup
import os
### 网页请求函数
def wy(number):resrequests.get(urlhttp://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-24hours-0-0-1-{}.format(number))res.encoding res.apparent_encoding#解决网页乱码问题return res.text
## 网页书籍解析部分
def shuj(number):soup BeautifulSoup(wy(number), html.parser)f1soup.find(ul,attrs{class:bang_list clearfix bang_list_mode})f2f1.find_all(li)shuj_list[]## 数据存放列表for i in f2:#shuj1i.find(div,attrs{class:list_num red})shuj1i.text.split(\n)print(shuj1)#shuj_list.append(list(filter(None, shuj1)))shuj_list.append(chuli(list(filter(None, shuj1))))#print(shuj1)return shuj_list#print(f)
## 数据处理函数
def chuli(shuj_list):print(shuj_list)shuru_list[]## 转化数据存储格式列表try:shuru_list.append(int(shuj_list[0].replace(.,)))# 排名 # int函数转化书籍类型字符串转化为整数shuru_list.append(shuj_list[1].replace(..., ))# 书名shuru_list.append(int(shuj_list[2].split(条评论)[0]))# 评论数shuru_list.append(float(shuj_list[2].split(条评论)[1][:-2].replace(%,))) # 推荐数shuru_list.append(shuj_list[3].split( 著)[0]) #作者shuru_list.append(shuj_list[4].split(\xa0)[0]) ## 出版时间print(shuj_list[4])shuru_list.append(shuj_list[4].split(\xa0)[1])# 出版社shuru_list.append(shuj_list[5])# 价格shuru_list.append(shuj_list[6].replace(\r,))## 原价shuru_list.append(shuj_list[7].replace(\r,).replace( ,)) # 折数shuru_list.append(dzjiage(shuj_list[9]))# 电子书价格except:passreturn shuru_list
## 处理网页中无电子书价格函数
def dzjiage(x):if x.find(电子书)-1:k无数据else:kx.replace(电子书,)return k
## 写入excel表类函数
class Excel_write():def __init__(self):self.excel_file 当当网书籍信息.xlsxif not os.path.exists(self.excel_file):self.wk Workbook();#创建excel工作薄self.wk.create_sheet(书籍信息,0);#sheet表名位置(从0开始)# 默认选择当前活跃选项卡self.wb self.wk[书籍信息]self.wb.append([排名,书名,评论数,推荐数,作者,出版时间,出版社,价格,原价,折数,电子书价格]);#横向插入数据self.wk.save(self.excel_file)self.wk_load load_workbook(filenameself.excel_file)self.wb_load self.wk_load[书籍信息]def nr1(self,number):shuj_list1shuj(number)## 循环爬取到的数据for i in shuj_list1:self.wb_load.append(i)## 写入数据self.wk_load.save(filenameself.excel_file)## 数据保存if __name____main__:for number in range(1,26):# number为网页的页数Excel_write().nr1(number) 5.运行结果