python爬虫之多线程扒光北京新发地菜价

所实验网址:

http://www.xinfadi.com.cn/priceDetail.html

首先对网页进行分析:
在这里插入图片描述
但是很显然,这些内容都不存在网页的源代码,所以这时候我们需要进行抓包
在这里插入图片描述
然后我们观察这个的url和请求方式,可以发现这是post类型,于是我们去找到他要传入的参数
在这里插入图片描述
我们通过点击下一页,具体看看哪些是需要传入的
在这里插入图片描述
我们会发现,current是我们需要具体传入的参数,而他就是代表页数,而这个limit是表示每页出现的数据量只能有20条。

我们分析完网页后,我们就可以开始编写程序了,那么直接上代码:(有点提示,如果嫌运行慢,可以多增加线程个数,比如把1000个线程改为10000,这样就会快很多)

# @Time:2021/12/1710:05
# @Author:中意灬
# @File:新发地.py
# @ps:tutu qqnum:2117472285
import csv
from  concurrent.futures import ThreadPoolExecutor
import requests
from bs4 import BeautifulSoup
with open('北京新发地菜价.csv',mode='w', encoding='utf-8',newline='') as f:
    wirter = csv.writer(f)#创建一个写入的对象
    wirter.writerow(['菜名', '最低价(元)', '最高价(元)', '平均价(元)', '产地','发布日期'])
    def get_one_page(pageNo):
        data={
            "limit":20,
            "current":pageNo,
        }
        url="http://www.xinfadi.com.cn/getPriceData.html"
        resp=requests.post(url,data=data)
        html=resp.json()
        list=html['list']
        # print(list)
        for i in list:
            if i['place']=='':
                i['place']='产地不详'
            wirter.writerow([i['prodName'],i['lowPrice'],i['highPrice'],i['avgPrice'],i['place'],i['pubDate']])
    if __name__ == '__main__':
        # get_one_page(1)
        with ThreadPoolExecutor(10000) as t:#创建10000个线程
            for i in range(1,20448):#所有页数
                t.submit(get_one_page,pageNo=i)
        print('over!')
        print('点赞不白嫖(狗头)')

运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值