Python爬虫 多线程爬取菜价

# 北京菜价
import requests
from lxml import etree
import csv
from concurrent.futures import ThreadPoolExecutor

f = open("data.csv", mode="w", encoding="utf-8")
writer = csv.writer(f)


def download_one_page(url):
    resp = requests.get(url)
    resp.encoding = "gb2312"
    html = etree.HTML(resp.text)
    # 找到数据位置
    table = html.xpath("/html/body/table[4]/tr/td[2]/table/tr[1]/td/table/tr[3]/td/table[2]")[0]
    # [position()<=3]获取平级的三个td里面的数据
    trs_name = table.xpath("./tr/td[position()<=3]/table/tr/td[2]/a")[1:]
    trs_price = table.xpath("./tr/td[position()<=3]/table/tr/td[3]/a")[1:]

    for name, price in zip(trs_name, trs_price):
        txt_name = name.xpath("./font/text()")
        txt_price = price.xpath("./font/text()")
        txt_price = (item.replace("\r", "").replace("\n", "").replace(" ", "") for item in txt_price)
        # print(f"名称: {txt_name}, 价格: {list(txt_price)}")
        writer.writerow([txt_name, list(txt_price)])
    print(url, "完毕")
    # resp.close()
    # f.close()


if __name__ == '__main__':
    # download_one_page("http://shveg.com/cn/price/Index.asp?ClassID=&page=1")

    with ThreadPoolExecutor(10) as t:
        for i in range(1, 50):
            t.submit(download_one_page, f"http://shveg.com/cn/price/Index.asp?ClassID=&page={i}")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值