本次爬取的网址是青岛菜市场
这一次主要练习的是bs4,这个网站和平常python教学视频中是有区别的,
由于另外一个菜市场网站是requests.post感觉比这个简单的多,就不发帖了,
这个网站所要的数据都在主页源代码中,但是比较有意思的是,我们所需要的数据是放在网页注释里面的,我也尝试了很多办法,但是对我这种方法是行不通的,
就直接利用str.replace将注释释放,这样就可以继续bs4检索网页文本了,
剩下的都不难,主要是去找另外一个网站去实操
没有解决的问题是:这个只能爬取当日的数据,虽然我上面给的网站是可以翻页到很多日的数据,但我着实没有发现怎么去遍历爬取之前的数据
源代码如下
[Python] 纯文本查看 复制代码 # -*- coding: utf-8 -*-
# Q9_ba4_pro.py
import requests
from bs4 import BeautifulSoup
import csv
import io
import sys
import time
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
# url="http://www.cncyms.cn/"
url="http://www.cncyms.cn/index.php?m=content&c=index&a=lists&catid=57"
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
(KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'}
time.sleep(1)
resp1=requests.get(url,headers=headers)
content=resp1.text.replace("<!--","")
content.encode('raw_unicode_escape').decode()
# print(content)
page=BeautifulSoup(content,"lxml")
# "lxml",与“html.parser",应该是互通的,lxml需要安装库,详细搜索百度,后者是pycharm就有的
print(type(page.text))
# print(page)
f=open("青岛菜市场批发价格表.csv","w",encoding="utf-8")
table=page.find_all(class_="conLi")
csvwriter=csv.writer(f)
for trs in table:
tr=trs.find_all("em")
species=tr[0].text
name=tr[1].text
highprice=tr[2].text
lowprice=tr[3].text
avgprice=tr[4].text
size=tr[5].text
date=tr[6].text
# print(species)
# break
csvwriter.writerow([species,name,highprice,lowprice,avgprice,size,date])
f.close() |