目录

爬虫爬取思路

python代码

数据库代码

后期发现:

解决方法:

词云制作


爬虫爬取思路

python代码

import requests  # 请求
from lxml import etree
import MySQLdb
from fake_useragent import UserAgent
import timedish = MySQLdb.connect(host='localhost',user='root',passwd='123456',db='xiachufang'
)
cur = dish.cursor()
dishname1 = ''
materials1 = ''
dishurl1 = ''
list1 = []f = open("dish.text", mode="w", encoding="utf-8")def insert(dishname, materials, dishurl):sql='insert into dish(dishname, materials, dishurl) values(%s, %s, %s)'params = (dishname, materials, dishurl)cur.execute(sql, params)ua = UserAgent()
headers = {'User-Agent': ua.random
}url1 = 'https://www.xiachufang.com/explore?page={}'
resp = requests.get(url1, headers=headers)for index in range(10):resp = requests.get(url1.format(index), headers=headers)#print(resp.text)html1 = etree.HTML(resp.text)time.sleep(1.2)for num in range(1, 26):str1 = '/html/body/div[4]/div/div/div[1]/div[1]/div/div[2]/div[1]/ul/li[{}]/div/div/p[1]/a/text()'str2 = '/html/body/div[4]/div/div/div[1]/div[1]/div/div[2]/div[1]/ul/li[{}]/div/div/p[2]/a/text()'str3 = '/html/body/div[4]/div/div/div[1]/div[1]/div/div[2]/div[1]/ul/li[{}]/div/a/@href'dishnames = html1.xpath(str1.format(num))time.sleep(1.2)for dishname in dishnames:dishname1 = dishnameprint('菜名:', end='')print()print(dishname.strip())materials = html1.xpath(str2.format(num))print('原材料:')for material in materials:list1.append(material)list1.append(' ')print(material, end=' ')print()print('详细烹饪流程URL:')step_url = html1.xpath(str3.format(num))for url in step_url:newurl = 'https://www.xiachufang.com'+urldishurl1 = newurlprint(newurl)print('---------------------')materials1 = ''.join(list1)f.write(dishname1+' '+materials1+' ')list1.clear()insert(dishname1, materials1, dishurl1)dish.commit()

数据库代码

CREATE DATABASE IF NOT EXISTS xiachufangCREATE TABLE IF NOT EXISTS dish
(
dishid INT AUTO_INCREMENT,
dishname VARCHAR(300),
materials VARCHAR(100),
dishurl VARCHAR(100),
PRIMARY KEY(dishid)
)ENGINE=INNODB DEFAULT CHARSET=utf8ALTER TABLE dish CONVERT TO CHARACTER SET utf8mb4

注意:将连接数据的数据换成自己的

后期发现:

        后期运行的时候发现报了一个错误:

Incorrect string value: '\\xF0\\x9F\\x94\\xA5\\xE5\\x8F...' for column 'dish

排查发现,是因为在网站爬取的信息中包含表情包,而我们是将信息保存到数据库中的,但是数据库采用的是utf-8编码,是三字节为一个单位,表情包是采用四个字节为一个单位,因此报错。

解决方法:

(请看大佬链接)彻底解决:java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x92\x94‘ for column ‘name‘ at row 1_小达哥的垃圾桶的博客-CSDN博客

词云制作

        先上代码:

import os
import numpy as np
import jieba
from PIL import Image
from wordcloud import WordCloudif __name__ == '__main__':#   打开文本with open('dish.text', 'r', encoding='utf-8') as f:#   汉字词云不同于英文词云,需要将空格,换行等替换掉text = f.read().replace(' ','').replace('\n','').strip()#   使用jieba库进行分割text = jieba.cut(text)text = ''.join(text)#   这是要导入的模板样式mask = np.array(Image.open('1.png'))#   mask接受图片蒙版#   font_path是字体,如果不加上的化,词云就识别不了汉字,呈现的将会是空格#   background_color是背景颜色,当时开可以设置长度和宽度等,大家可以根据自己的需求添加wordcloud = WordCloud(mask=mask,font_path='HYNanGongTiJ-2.ttf',background_color='white').generate(text)#    保存wordcloud.to_file('test.jpg')

友情提醒:

        注意需要导入相关的库,不然会出错

        我们直接在终端使用pip导入,可能会比较慢,因此推荐使用国内镜像

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

爬虫-菜谱信息爬取(保存至数据库)相关推荐

  1. Python爬虫实战 | (7) 爬取万方数据库文献摘要

    在本篇博客中,我们将爬取万方数据库,首先我们打开万方首页http://www.wanfangdata.com.cn: 在搜索框中输入关键词,选择期刊.学位或会议,点击搜论文,并可得到与关键词相关的期刊 ...

  2. Python爬虫实战 | (12) 爬取万方数据库文献摘要并存入MongoDB

    之前在Python爬虫实战(7)中曾爬取过万方,本篇博客的爬取解析过程和之前几乎完全一样,不同的是数据存储方式,之前是存储到文件中(csv,txt,json,excel等),这次我们将提取的论文信息存 ...

  3. 【Python】Scrapy完成电影信息爬取并存入数据库

    本文使用了scrapy框架对电影信息进行爬取并将这些数据存入MySQL数据库. 一.安装相关python模块 根据你所使用的python包管理器安装相应的模块.比如使用pip: pip install ...

  4. 把爬取信息导出到mysql,关于爬虫学习的一些小小记录(四)——爬取数据存入数据库...

    关于爬虫学习的一些小小记录(四)--爬取数据存入数据库 创建数据库 pymysql 模块 具体操作 预知后事如何 前面我们已经讲了怎么访问网页,并且从网页源码中提取数据.既然数据有了,怎样管理就是下一 ...

  5. Python爬虫入门(爬取豆瓣电影信息小结)

    Python爬虫入门(爬取豆瓣电影信息小结) 1.爬虫概念 网络爬虫,是一种按照一定规则,自动抓取互联网信息的程序或脚本.爬虫的本质是模拟浏览器打开网页,获取网页中我们想要的那部分数据. 2.基本流程 ...

  6. 教你如何使用Java代码从网页中爬取数据到数据库中——网络爬虫精华篇

    文章目录 1:网络爬虫介绍 2:HttpClients类介绍 2.1 HttpGet参数问题 2.2 HttpPost参数问题 2.3 连接池技术问题 3:Jsoup介绍 4:动手实践如何抓取网页上数 ...

  7. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) -- 编写一个基本的 Spider 爬取微博用户信息 在上一篇博客中,我们已经新建了一个爬虫应用,并简单实现了爬取一位微 ...

  8. 爬虫入门—requests模块基础之药监企业信息爬取

    爬虫入门-requests模块基础之药监企业信息爬取 Author: Labyrinthine Leo   Init_time: 2021.02.22 Key Words: Spider.reques ...

  9. 爬虫实战:爬取bilibiliTop100条热门视频信息

    爬取bilibiliTop100条热门视频信息 对于信息的爬取可以分为三个步骤进行处理,分别是获取网页.获取和解析数据最后保存数据.于是我们的主函数的框架如下: def main(): # 1. 获取 ...

最新文章

  1. 将多个文件的属性添加到数据库
  2. Delphi第三方组件安装DCU.PAS.DPK.BPL.ActiveX控件
  3. 6个信号提醒是时候跳槽了 CIO务必get到
  4. java城市级联一次查询_我的城市没有任何设计活动,所以我自己组织了一次。...
  5. 常见的排序算法二——希尔排序
  6. Error installing bundler:bundler requires Ruby version >= 2.3.0.
  7. Keras自定义Loss函数
  8. Cocos creator之javascript闭包
  9. 1.2 Zend_Acl (2)
  10. PyCharm 入手第一记
  11. java算法训练 Interval
  12. PAT乙级刷题感想及踩坑总结
  13. Unity查找图片被哪个Prefab引用
  14. 面向对象的15、18位中国大陆身份证号码解析、工具
  15. OpenGauss数据库的安装与运行
  16. 手机连电脑热点,电脑连手机热点的ip分配问题
  17. 值得留意在线支持插件
  18. 游吟诗人之中二病犯了
  19. 用python写爬虫 (三)获取数据、requests库
  20. HTC Vive开发笔记之手柄震动

热门文章

  1. 后台管理权限管理(二) 权限按钮控制的实现
  2. 业界 | 李飞飞团队最新研究成果:视觉AI让医院细菌无处可逃!
  3. Excel2010的LARGE函数应用详解
  4. 美评网java 作家系统页面_《大型网站系统与Java中间件》读书笔记(上)
  5. IMDB评选出的250部最佳电影
  6. 螺纹钢尺寸测量方法及优点
  7. 我总结的EXCEL经典用法全集
  8. 前端第三方授权登陆--飞书授权登陆
  9. 百家讲坛 易经的奥秘
  10. badboy中文是什么意思_BadBoy是什么意思