#常用的http请求数据库
import bs4.element
import requests
from bs4 import BeautifulSoup
import pymysql
#配置请求函数
def get_url(url): 如果没有找到,异常就会被临时保存起来,最后会抛出保存的异常#配置请求头
h={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 Edg/96.0.1054.62'}
#获取网页的方法
respomse=requests.get(url=url,headers=h)
#提取文本
html=respomse.text
return html
#准确的定位错误类型和错误明细
except Exception as e:
#打印遇到的异常
return e
#解析网页
#找到数据
def parse (html): 如果没有找到,异常就会被临时保存起来,最后会抛出保存的异常
- soup = BeautifulSoup(html, 'lxml')
复制代码 找寻网页中需要的部分
- lis=soup.find(name='div',attrs={'class':'volume'})
- a= lis.find_all(name='li')
复制代码 创建空列表,用于存储数据
- b = []
- for li in a:
- divs=li.find('a').text
- # 返回遍历后的数据
- b.append(divs)
- return b
复制代码#存储数据
def save(data):
# 设置与数据库的链接
conn = pymysql.connect(user='root', password='123456', host='192.168.5.101', database='jxc')
# 执行链接数据库的命令
cs = conn.cursor()
# 如果没有找到,异常就会被临时保存起来,最后会抛出保存的异常。
try:
# 循环保存数据
for i in data:
# sql语句,把数据存储到目标位置
sql = 'insert into 蒋心成(小说) values("{}")'.format(i)
# 执行 SQL 语句并指示第一个结果的形式
cs.execute(sql) # 执行SQL语句
conn.commit()
conn.close() # 关闭链接
# 表示代码运行正常,已将爬取到的数据保存到数据库
print("数据储存成功。。。")
# 准确的定位错误类型与错误明细
except Exception as e:
# 异常时返回
print("储存失败")
# 打印异常
print(e) #调用函数
def main():
# 设置爬取的网站
url='https://www.hongxiu.com/book/6763341403549003'
html=get_url(url)
data=parse(html)
# 把爬取的数据返回到data来存储数据
save(data)
#调用函数
main()
|