# 北京菜价
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}")
Python爬虫 多线程爬取菜价
最新推荐文章于 2024-10-07 01:36:35 发布