ldl92 发表于 2022-7-11 11:00

python爬虫新手第三个自敲爬青岛菜市场价格(有源码

本次爬取的网址是青岛菜市场
这一次主要练习的是bs4,这个网站和平常python教学视频中是有区别的,
由于另外一个菜市场网站是requests.post感觉比这个简单的多,就不发帖了,
这个网站所要的数据都在主页源代码中,但是比较有意思的是,我们所需要的数据是放在网页注释里面的,我也尝试了很多办法,但是对我这种方法是行不通的,
就直接利用str.replace将注释释放,这样就可以继续bs4检索网页文本了,
剩下的都不难,主要是去找另外一个网站去实操
没有解决的问题是:这个只能爬取当日的数据,虽然我上面给的网站是可以翻页到很多日的数据,但我着实没有发现怎么去遍历爬取之前的数据
源代码如下

# -*- coding: utf-8 -*-
# Q9_ba4_pro.py
import requests
from bs4 import BeautifulSoup
import csv
import io
import sys
import time
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
# url="http://www.cncyms.cn/"
url="http://www.cncyms.cn/index.php?m=content&c=index&a=lists&catid=57"
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'}
time.sleep(1)
resp1=requests.get(url,headers=headers)
content=resp1.text.replace("<!--","")
content.encode('raw_unicode_escape').decode()
# print(content)
page=BeautifulSoup(content,"lxml")
# "lxml",与“html.parser",应该是互通的,lxml需要安装库,详细搜索百度,后者是pycharm就有的
print(type(page.text))
# print(page)
f=open("青岛菜市场批发价格表.csv","w",encoding="utf-8")
table=page.find_all(class_="conLi")
csvwriter=csv.writer(f)
for trs in table:
    tr=trs.find_all("em")
    species=tr.text
    name=tr.text
    highprice=tr.text
    lowprice=tr.text
    avgprice=tr.text
    size=tr.text
    date=tr.text
    # print(species)
    # break
    csvwriter.writerow()
f.close()

w14425 发表于 2022-7-11 18:52

本帖最后由 w14425 于 2022-7-11 18:55 编辑

import requests
import json
import pandas as pd
url="http://www.cncyms.cn/pages.php"
pp=[]
for o in range(0,100):
    data={"pageNum":o,"pname":None,"reltime":"蔬菜"}
    browser=requests.post(url,data)
    aa = json.loads(browser.text)
    pp.extend(aa['list'])
df_table = pd.DataFrame(pp)
print("完成")
df_table.columns=["类别","品名","最高价","最低价","中间参考价","规格","发布日期"]
df_table.to_excel("测试数据.xlsx", index=False)


直接调用接口,仅供学习

高苗苗 发表于 2022-7-11 14:34

建议加个功能,把各个菜品最近一周的价钱绘制曲线,这样预测在出现最低价时去买菜

52shine 发表于 2022-7-11 12:54

photocs 发表于 2022-7-11 13:12

分享的案例很值得学习啊

偶布川内酷 发表于 2022-7-11 13:17

直接解析json接口是不是更方便

demolee 发表于 2022-7-11 13:23

非常厉害,多谢分享,已经在自己电脑上了试了下

Harold123 发表于 2022-7-11 14:31

楼上那个说的对,直接找接口,可以直接获得json数据,还可以解决你说的翻页获取数据的问题
接口:http://www.cncyms.cn/pages.php
请求方法:POST
参数:
pageNum: 0
pname:
reltime: 蔬菜
可以获得分页数据,然后顺便分析一下菜价的变化啥的

l049i 发表于 2022-7-11 14:45

谢谢分享,学习了

i659 发表于 2022-7-11 15:02

进来学习一下

叫我小王叔叔 发表于 2022-7-11 15:12

高苗苗 发表于 2022-7-11 14:34
建议加个功能,把各个菜品最近一周的价钱绘制曲线,这样预测在出现最低价时去买菜

真个真不错,哈哈
页: [1] 2 3
查看完整版本: python爬虫新手第三个自敲爬青岛菜市场价格(有源码