本文爬取目标网页表格中的内容,提取(品名,最高价,最低价,均价)信息,导入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 id="PriceShuCai1">
td = page.find("td",attrs={"id":"PriceShuCai1"})
此时我就拿到<td>内容</td>这里面的内容了,
此时,我在获取得到里面的所有行
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!!!")
结果如下: