bs4爬取北京新发地菜价

Python源代码输入

import requests
from bs4 import BeautifulSoup
import csv

# UA伪装
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'}

# open打开文件并返回一个文件对象
f = open("菜价.csv", mode="a")

# 共15084页 善良一点 只爬三页
for temp in range(1,4):
    url = "http://www.xinfadi.com.cn/marketanalysis/0/list/{0}.shtml".format(str(temp))
    resp = requests.get(url)
    # 查看网页源代码发现charset = utf-8
    resp.encoding = "utf-8"
    csvwriter = csv.writer(f)

    # 解析数据
    # 1.把页面源代码交给beautifulsoup处理生成bs对象
    page = BeautifulSoup(resp.text, "html.parser")  # 指定html解析器

    # 2.从bs对象中查找数据
    # find(标签名,属性=属性值) 只找第一个
    # find_all(标签名,属性=属性值)
    table = page.find("table", attrs={"class": "hq_table"})  # 字典

    # 拿到所有数据
    # table中第一个元素为标签,不含数据,所以从下标1开始取数据
    trs = table.find_all("tr")[1:]
    for tr in trs:
        tds = tr.find_all("td")
        name = tds[0].text  # .text表示拿到被标签标记的内容
        low = tds[1].text  # .text表示拿到被标签标记的内容
        avg = tds[2].text  # .text表示拿到被标签标记的内容
        high = tds[3].text  # .text表示拿到被标签标记的内容
        size = tds[4].text  # .text表示拿到被标签标记的内容
        unit = tds[5].text  # .text表示拿到被标签标记的内容
        date = tds[6].text  # .text表示拿到被标签标记的内容
        csvwriter.writerow([name, low, avg, high, size, unit, date]) # writerow 按行写入

    print("第" + str(temp) + "页" + "over")

f.close()

CSV File Reading and Writing

Python标准库csv函数文档

csv模块实现用于以CSV格式读取和写入表格数据的类。它使程序员可以说“以Excel首选的格式写入此数据”,或“从Excel生成的此文件中读取数据”,而无需知道Excel使用的CSV格式的确切细节。程序员还可以描述其他应用程序可以理解的CSV格式,或者定义自己的专用CSV格式。

csv模块readerwriter对象读取和写入序列。程序员还可以使用DictReaderDictWriter类以字典形式读取和写入数据。

Python open()函数

Python标准库io处理流的核心工具文档

open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
函数定义的参数挺多,这里我们着重讲解mode——文件打开模式。

mode参数有两大类,分别用来指定打开文件的文件格式和读写模式。

文件格式

t:以文本格式打开文件(默认)。一般用于文本文件,如:txt。
b:以二进制格式打开文件。一般用于非文本文件,如:图片。
这一类参数可以与其它的模式参数组合使用,用于指定打开文件的格式。

读写模式

r:以只读方式打开文件(默认模式)。文件指针定位在文件头的位置。如果文件不存在会报错
w:以只写方式打开文件。如果文件存在,则打开文件,清空文件内容,从文件头开始编辑;如果文件不存在,则创建新文件,打开编辑。
a:以追加方式打开文件,同样是只写,不允许进行读操作。如果文件存在,则打开文件,将文件指针定位到文件尾。因此,新的内容是追加在已有内容之后。如果文件不存在,则创建新文件进行写入。
+:打开一个文件进行更新(可读写)。注意:该模式不能单独使用,需要与r/w/a组合使用。文件指针的位置取决于另一个组合参数。

组合模式

r+:打开一个文件用于读写。如果文件存在,则打开文件,将文件指针定位在文件头,新写入的内容在原有内容的前面;如果文件不存在会报错。
w+:打开一个文件用于读写。如果文件存在,则打开文件,清空原有内容,进入编辑模式;如果文件不存在,则创建一个新文件进行读写操作。
a+:以追加模式打开一个文件用于读写。如果文件存在,则打开文件,将文件指针定位在文件尾,新写入的内容在原有内容的后面;如果文件不存在,则创建一个新文件用于读写。
所有上面这些模式默认都是t——文本模式,如果要以二进制模式打开,需要加上参数b,如:rbrb+wbwb+abab+

输出

第1页over
第2页over
第3页over

菜价.csv

大白菜,0.40,0.50,0.60,存储,斤,2021-03-26

大白菜,0.70,0.75,0.80,新,斤,2021-03-26

娃娃菜,0.60,0.75,0.90,大\小,斤,2021-03-26

芹菜,0.80,0.90,1.00,鲁,斤,2021-03-26

菠菜,0.60,0.95,1.30,长杆\冀,斤,2021-03-26

番茄,1.00,1.40,1.80,川鲁蒙,斤,2021-03-26

番茄(精品),1.50,1.75,2.00,普通,斤,2021-03-26

黄瓜,1.60,1.90,2.20,蒙辽袋\鲁,斤,2021-03-26

黄瓜(鲜干花),2.60,2.90,3.20,冀,斤,2021-03-26

小黄瓜,3.80,4.90,6.00,旱\荷兰,斤,2021-03-26

茄子,1.20,1.60,2.00,鲁\冀,斤,2021-03-26

架豆,2.60,3.70,4.80,\冀,斤,2021-03-26

尖椒,1.40,1.95,2.50,冀晋/鲁新,斤,2021-03-26

柿子椒,1.40,1.85,2.30,\鲁新,斤,2021-03-26

土豆,0.60,0.80,1.00,\冀,斤,2021-03-26

新土豆,0.70,0.95,1.20,陕冀云新,斤,2021-03-26

黄葱头,0.80,1.00,1.20,\蒙甘,斤,2021-03-26

红葱头,0.90,1.10,1.30,普通,斤,2021-03-26

葱,3.50,3.75,4.00,冀/苏鲁闽,斤,2021-03-26

吊冬瓜,1.70,1.95,2.20,桂,斤,2021-03-26

地冬瓜,1.40,1.60,1.80,苏、新,斤,2021-03-26

团生菜,2.50,2.75,3.00,滇|冀,斤,2021-03-26

圆白菜(陆地),0.50,0.60,0.70,鄂\苏,斤,2021-03-26

圆白菜(大棚),1.00,1.15,1.30,普通,斤,2021-03-26

油菜,1.50,1.75,2.00,鲁\京,斤,2021-03-26

姜,3.00,4.00,5.00,姜头\新,斤,2021-03-26

大蒜,2.50,2.75,3.00,普通,斤,2021-03-26

新蒜,2.00,2.30,2.60,普通,斤,2021-03-26

西葫芦,1.00,1.20,1.40,滇/鲁,斤,2021-03-26

菜花,1.20,1.60,2.00,普通,斤,2021-03-26

散菜花,2.00,2.65,3.30,豫\苏,斤,2021-03-26

绿菜花,1.60,2.10,2.60,\ 冀,斤,2021-03-26

胡萝卜,0.70,0.95,1.20,冀/鲁,斤,2021-03-26

胡萝卜(洗),1.00,1.15,1.30,冀/蒙箱,斤,2021-03-26

心里美,0.80,1.05,1.30,冀,斤,2021-03-26

白萝卜,0.50,0.60,0.70,\冀,斤,2021-03-26

卞萝卜,0.40,0.50,0.60,冀,斤,2021-03-26

青萝卜,1.80,2.15,2.50,冀\津,斤,2021-03-26

平菇,2.00,2.25,2.50,\小叶,斤,2021-03-26

莴笋,1.20,1.60,2.00,闽浙/鲁,斤,2021-03-26

香菇,2.50,3.75,5.00,普通,斤,2021-03-26

香菜,5.00,5.50,6.00,鲁\冀,斤,2021-03-26

山药,1.80,2.10,2.40,脆\麻新,斤,2021-03-26

铁棍山药,5.00,5.75,6.50,普通,斤,2021-03-26

藕,2.00,3.00,4.00,\津,斤,2021-03-26

小毛冬瓜,2.00,2.50,3.00,长\圆,斤,2021-03-26

韭菜,1.20,1.35,1.50,二茬\粤,斤,2021-03-26

小白菜,1.50,1.65,1.80,普通,斤,2021-03-26

蒜苗,3.00,4.50,6.00,云\鲁存,斤,2021-03-26

蒜黄,2.00,2.90,3.80,2茬\冀,斤,2021-03-26

豆王,3.50,5.15,6.80,普通,斤,2021-03-26

扁豆,2.80,3.90,5.00,冀\鲁聊城,斤,2021-03-26

豇豆,4.00,4.50,5.00,桂滇闽,斤,2021-03-26

白不老,4.00,5.00,6.00,滇|鲁,斤,2021-03-26

油豆,7.00,7.65,8.30,滇,斤,2021-03-26

毛豆,5.00,5.40,5.80,普通,斤,2021-03-26

红薯,1.20,1.40,1.60,\冀新,斤,2021-03-26

红薯,2.00,2.25,2.50,西瓜红,斤,2021-03-26

绿豆芽,0.90,0.95,1.00,普通,斤,2021-03-26

黄豆芽,0.80,0.85,0.90,普通,斤,2021-03-26
标签: