今天在学习Python网络数据采集时,看到”把数据存储到CSV“这一小结,准备练习一下,作者爬取的网站是维基百科的,我只能用百度搜索到的网站练习,http://xh.5156edu.com/page/z1015m9220j18754.html,我用了这个网站准备爬取颜色表。
结果。。。很简单的任务搞了解决一个半小时,心态崩了,怀疑人生。。。
我使用BeautifulSoup对象接受html数据,在用findAll搜索关键字时出现了问题,一模一样的关键字竟然搜不出来???
<TR>
<TD class=content>
<DIV>
<TABLE width='100%'>
<TBODY>
<TR>
<TD width='15%' align=middle> </TD>
<TD align=middle>颜色名</TD>
<TD height=28 align=middle>中文名称</TD>
<TD align=middle>Hex RGB</TD>
<TD align=middle>十进制 Decimal</TD>
<TD width='15%' align=middle> </TD>
</TR>
<TR>
<TD bgColor=#ffb6c1> </TD>
<TD bgColor=#dedede>LightPink</TD>
<TD bgColor=#dedede height=28>浅粉红</TD>
<TD bgColor=#c0c0c0>#FFB6C1</TD>
<TD bgColor=#c0c0c0>255,182,193</TD>
<TD bgColor=#ffb6c1> </TD>
</TR>
我敏锐地挑选出<TD class=content>作为搜索关键字,但是当使用如下代码时,搜索结果为空???!!?
bsObj.findAll("TD", {"class": "content"}
我尝试着换一些关键字,发现有些可以,有些不可以。。。
直到。。。
我把TD 改为 td 发现搜索结果出来了。。。
所以原来的html中为什么搞成大写啊???
把关键字都写成小写,结果就出来了
下面附上完整代码,将表格数据导入到csv,My God!真是开心的一天呢,又踩了一个坑,哈哈哈
import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup
import time
html = urlopen("http://xh.5156edu.com/page/z1015m9220j18754.html")
bsObj = BeautifulSoup(html, features="lxml")
colorName = bsObj.findAll("td", {"bgcolor": "#dedede"})
colorCode = bsObj.findAll("td", {"bgcolor": "#c0c0c0"})
csvFile = open("../color.csv", "wt", newline="", encoding='utf-8')
writer = csv.writer(csvFile)
try:
for i in range(int(len(colorName)/2)):
row = []
row.append(colorName[i*2].get_text())
row.append(colorCode[i*2].get_text())
writer.writerow(row)
finally:
csvFile.close()
print('done...')