某次去吃饭,觉得味道不错,后来打开了这个公司的官网,看到了几组菜品数据,就想着爬下来。
缩小网页之后,一共12组数据。
第一步,F12
取这三个数据
代码:
先引入各种库,其中pymysql是python进行数据库操作的库,这个必不可少
安装库有两种方法,
第一种:简单的,利用pycharm自身的特性,保存的时候,会自动检测,如果下面用到了,但是上面没有引入,会自动引入,并且安装相应的类
第二种:打开win+r ,cmd命令行,去安装(这里不解释,一般都是用pycharm去安装的)
1.引入类库
2.拼接headers头
3.请求地址,并且利用正则去匹配筛选出想要的数据(如果是直接请求的接口,则可以直接拿到数据,省掉正则匹配html代码的这一步)
4.对得到的 数据进行处理,封装成易于存入数据库的类型
5存入数据库
6利用python的web三方类或者是其他的语言,进行数据的展示,这里采用了PHP进行展示。
import re
import array as arr
import pymysql
import requests # 先导入爬虫的库,不然调用不了爬虫的函数
from lxml.doctestcompare import strip
headers = {
# "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36"
} # 设置头部信息,伪装浏览器
response = requests.get("https://www.xishaoye.com/products.html", headers=headers) # get方法访问,传入headers参数,
response.encoding = 'GBK'
response.encoding = 'utf-8'
# print(response.text)
t = '<div class="food-img"><img class="food-img-none" src="(.*?)" alt="(.*?)"></div>'
#
s = '<p class="food-desc familysy" style="color: #8d8d8d;">(.*?)</p>'
result = re.findall(t, response.text)
result2 = re.findall(s, response.text)
chang = len(result)
array_arr = []
array_alls = []
a = 0
db = pymysql.connect(host='localhost',
user='root',
password='',
database='',
charset='utf8')
cursor = db.cursor()
while a < chang:
array_arr.append(strip(result[a][0]))
array_arr.append(strip(result[a][1]))
array_arr.append(strip(result2[a]))
array_alls.append(array_arr)
array_arr = []
a += 1
#
for value in array_alls:
name = str(value[1])
text = str(value[2])
image1 = 'https://www.xishaoye.com' + value[0]
image = str(image1)
try:
sql = "insert into os_py_xishaoye (name, text, image) values (%s,%s,%s)"
cursor.execute(sql, [name, text, image])
db.commit()
except Exception as e:
print("插入数据失败:", e)
else:
# 如果是插入数据, 一定要提交数据, 不然数据库中找不到要插入的数据;
print("插入数据成功;")
我这边是保存进了数据库,利用PHP展示出来的