吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2896|回复: 24
收起左侧

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

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

[Python] 纯文本查看 复制代码
# -*- 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[0].text
    name=tr[1].text
    highprice=tr[2].text
    lowprice=tr[3].text
    avgprice=tr[4].text
    size=tr[5].text
    date=tr[6].text
    # print(species)
    # break
    csvwriter.writerow([species,name,highprice,lowprice,avgprice,size,date])
f.close()

网页所需数据源码

网页所需数据源码

生成的csv文件

生成的csv文件

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

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

[Python] 纯文本查看 复制代码
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
建议加个功能,把各个菜品最近一周的价钱绘制曲线,这样预测在出现最低价时去买菜

真个真不错,哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-6-1 11:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表