本文爬取目标网页表格中的内容,提取(品名,最高价,最低价,均价)信息,导入csv文件中
前期准备: 工具:Spyder 引用的库:requests,bs4中的BeautifulSoup,csv
1.获取目标网址信息
url = "http://www.whbsz.com.cn/" resp = requests.get(url)
2.解析数据,将页面源代码交给BeautifulSoup进行处理,生成bs对象
page = BeautifulSoup(resp.text,"html.parser")
3.用find或find_all去查找目标信息,进行定位
- find(标签,属性值):寻找一个
- find_all(标签,属性值):寻找所有
查看目标网页背后的源码,定位到需要的信息块,这里选取定位到
td = page.find("td",attrs={"id":"PriceShuCai1"})此时我就拿到
内容 这里面的内容了,
此时,我在获取得到里面的所有行trs = td.find_all("tr")我们知道,我们需要的信息,正是处于每一行里相应列处
此时分别取出每行相应的列值及时我们需要的资料for tr in trs: tds = tr.find_all("td") # 拿到每行中的所有td name = tds[0].text high_price = tds[2].text low_price = tds[3].text mean_price = tds[4].text注意:我们从源代码里发现,每行中的第二列是空的,所有跳过tds[1]
现在,我们所有的值取去完毕,将资料存入csv中,import csv f = open("蔬菜价.csv",mode="w",encoding="utf-8") csvwriter = csv.writer(f)将资料写入csvwriter中即可,
完整代码如下:
# -*- coding: utf-8 -*- """ Created on Sun Oct 3 10:39:53 2021 @author: yingzi E-mail:guotaomath@163.com """ import requests from bs4 import BeautifulSoup import csv url = "http://www.whbsz.com.cn/" resp = requests.get(url) f = open("蔬菜价.csv",mode="w",encoding="utf-8") csvwriter = csv.writer(f) # 解析数据 # 1.把页面源代码交给BeautifulSoup进行处理,生成bs对象 page = BeautifulSoup(resp.text,"html.parser") # 2.从bs对象中查找数据 td = page.find("td",attrs={"id":"PriceShuCai1"}) # 拿到所有数据行 trs = td.find_all("tr") for tr in trs: tds = tr.find_all("td") # 拿到每行中的所有td name = tds[0].text high_price = tds[2].text low_price = tds[3].text mean_price = tds[4].text csvwriter.writerow([name,high_price,low_price,mean_price]) print("over!!!")结果如下:



