实现python爬虫的简单细节分析
爬虫部分
1. 这肯定得加个User-Agent,不然连不上
这里面可能还要加上cookie,这个有点诡异。你说,有一个值等于 0, 60 ,怎么办?把它变成[],还是””???
2. 常规路数,使用bs4
1 | def getHtml(url): |
然后用find和find_all找到所有相关标签,当然可以指定class=???
3. 爬取表格
1 | comment_list = soup.find('table', attrs={'class': 'table'}).find_all('tr') |
自己看,因为有的会带有列名,注意。
4. 正则表达
提取括号内的内容:
1 | re.findall(r".*\((.*)\)", Num) |
由于提取之后会变成123,123这样的玩意,所以,将其replace替换
1 | tNum = "".join(re.findall(r".*\((.*)\)", Num)).replace(',', '') |
好了,这里又将遇到问题:因为有的数据因数字较小,所以不会有(),那么re.findall之后的内容就只有None,如果再进行float,将会报错:ValueError。这时我们可以运用异常处理来解决:
1 | try: |
5. 字典与列表的基本应用
这里我只用了很少,不管了,先写下来:
- 添加字典:直接dict[yourkey]=??就可以
- 添加列表数据:listData.append(youwant)
- 删除字典:dict.pop(key)
数据读写部分
这里都是对excel表格的操作。
1. 读excel
打开文件并且选择相应的sheet
注意,因为我存的是xls,所以不能用openxls来进行读,而应该用xlrd
1 | workbook= xlrd.open_workbook(filepath) |
获取最大行列数
1 | mrow=worksheet.nrows |
读单元格
1 | worksheet.cell(row, colum).value |
2. 写excel
新建
1 | workbook = xlwt.Workbook() |
写入
1 | sheet.write(row, col, str(value)) |
这里value必须是str类型,不然会报错!
保存
1 | workbook.save(filename) |
数据分析部分
1. 数据拟合及预测
拟合函数生成
1 | f1= np.polyfit(xdata, ydata, 3) |
注:xdata,ydata是x,y坐标点的系列值,3是曲线拟合次数,此时p1即3次多项式。先把xdata代入p1多项式中,将会生成yvals1相应的值,这个可以作为预测值。
2. 图像生成
1 | ln1 = plt.plot(xdata, ydata, color='red', label='original values') |
注:
- ln1是原来的图,那个label是标签(指定这个曲线是啥玩意)
- pln1是拟合之后的值,使用拟合之后的yvals1。
- linestyle=’-.’是线的类型,有– -. - 空等等
- 而plt.xlabel是指定x轴是啥
- plt.show()展示图像
- plt.savefig(filename)保存图像为filename
- 如果不关闭,那么这些xlabel和ylabel会混杂在一起,所以必须使用plt.close()