Python爬虫数据应该怎么处理

2024-05-10 21:20

1. Python爬虫数据应该怎么处理

一、首先理解下面几个函数
设置变量 length()函数 char_length() replace() 函数 max() 函数1.1、设置变量 set @变量名=值
set @address='中国-山东省-聊城市-莘县';select @address
1.2 、length()函数 char_length()函数区别
select length('a'),char_length('a'),length('中'),char_length('中')
1.3、 replace() 函数 和length()函数组合
set @address='中国-山东省-聊城市-莘县';select @address,replace(@address,'-','') as address_1,length(@address) as len_add1,length(replace(@address,'-','')) as len_add2,length(@address)-length(replace(@address,'-','')) as _count
etl清洗字段时候有明显分割符的如何确定新的数据表增加几个分割出的字段
计算出com_industry中最多有几个 - 符 以便确定增加几个字段 最大值+1 为可以拆分成的字段数 此表为3 因此可以拆分出4个行业字段 也就是4个行业等级
select max(length(com_industry)-length(replace(com_industry,'-',''))) as _max_countfrom etl1_socom_data
1.4、设置变量 substring_index()字符串截取函数用法
set @address='中国-山东省-聊城市-莘县';select substring_index(@address,'-',1) as china,substring_index(substring_index(@address,'-',2),'-',-1) as province,substring_index(substring_index(@address,'-',3),'-',-1) as city,substring_index(@address,'-',-1) as district
1.5、条件判断函数 case whencase when then when then else 值 end as 字段名
select case when 89>101 then '大于' else '小于' end as betl1_socom_data
二、kettle转换etl1清洗
首先建表 步骤在视频里字段索引 没有提 索引算法建议用BTREE算法增强查询效率
2.1.kettle文件名:trans_etl1_socom_data2.2.包括控件:表输入>>>表输出2.3.数据流方向:s_socom_data>>>>etl1_socom_data

kettle转换1截图
2.4、表输入2.4、SQL脚本 初步清洗com_district和com_industry字段
select a.*,case when com_district like '%业' or com_district like '%织' or com_district like '%育' then null else com_district end as com_district1,case when com_district like '%业' or com_district like '%织' or com_district like '%育' then concat(com_district,'-',com_industry) else com_industry end as com_industry_total,replace(com_addr,'地 址:','') as com_addr1,replace(com_phone,'电 话:','') as com_phone1,replace(com_fax,'传 真:','') as com_fax1,replace(com_mobile,'手机:','') as com_mobile1,replace(com_url,'网址:','') as com_url1,replace(com_email,'邮箱:','') as com_email1,replace(com_contactor,'联系人:','') as com_contactor1,replace(com_emploies_nums,'公司人数:','') as com_emploies_nums1,replace(com_reg_capital,'注册资金:万','') as com_reg_capital1,replace(com_type,'经济类型:','') as com_type1,replace(com_product,'公司产品:','') as com_product1,replace(com_desc,'公司简介:','') as com_desc1from s_socom_data as a
2.5、表输出

表输出设置注意事项
注意事项:① 涉及爬虫增量操作 不要勾选裁剪表选项②数据连接问题 选择表输出中表所在的数据库③字段映射问题 确保数据流中的字段和物理表的字段数量一致 对应一致
三、kettle转换etl2清洗
首先建表增加了4个字段 演示步骤在视频里字段索引 没有提 索引算法建议用BTREE算法增强查询效率
主要针对etl1 生成的新的com_industry进行字段拆分 清洗3.1.kettle文件名:trans_etl2_socom_data3.2.包括控件:表输入>>>表输出3.3.数据流方向:etl1_socom_data>>>>etl2_socom_data注意事项:① 涉及爬虫增量操作 不要勾选裁剪表选项②数据连接问题 选择表输出中表所在的数据库③字段映射问题 确保数据流中的字段和物理表的字段数量一致 对应一致

kettle转换2截图
3.4、SQL脚本 对com_industry进行拆分 完成所有字段清洗 注册资金字段时间关系没有进行细致拆解 调整代码即可
select a.*,case #行业为''的值 置为空when length(com_industry)=0 then null#其他的取第一个-分隔符之前else substring_index(com_industry,'-',1)  end as com_industry1,case when length(com_industry)-length(replace(com_industry,'-',''))=0 then null#'交通运输、仓储和邮政业-' 这种值 行业2 也置为nullwhen length(com_industry)-length(replace(com_industry,'-',''))=1 and length(substring_index(com_industry,'-',-1))=0 then nullwhen length(com_industry)-length(replace(com_industry,'-',''))=1  then substring_index(com_industry,'-',-1)else substring_index(substring_index(com_industry,'-',2),'-',-1)end as com_industry2,case when length(com_industry)-length(replace(com_industry,'-',''))<=1 then nullwhen length(com_industry)-length(replace(com_industry,'-',''))=2 then  substring_index(com_industry,'-',-1)else substring_index(substring_index(com_industry,'-',3),'-',-1)end as com_industry3,case when length(com_industry)-length(replace(com_industry,'-',''))<=2 then nullelse substring_index(com_industry,'-',-1)end as com_industry4from etl1_socom_data as a
四、清洗效果质量检查
4.1爬虫数据源数据和网站数据是否相符
如果本身工作是爬虫和数据处理在一起处理,抓取的时候其实已经判断,此步骤可以省略,如果对接上游爬虫同事,这一步首先判断,不然清洗也是无用功,一般都要求爬虫同事存储请求的url便于后面数据处理查看数据质量
4.2计算爬虫数据源和各etl清洗数据表数据量
注:SQL脚本中没有经过聚合过滤 3个表数据量应相等
4.2.1、sql查询 下面表我是在同一数据库中 如果不在同一数据库 from 后面应加上表所在的数据库名称不推荐数据量大的时候使用
select count(1) from s_socom_dataunion allselect count(1) from etl1_socom_dataunion allselect count(1) from etl2_socom_data
4.2.2 根据 kettle转换执行完毕以后 表输出总量对比

kettle表输出总数据量
4.3查看etl清洗质量
确保前两个步骤已经无误,数据处理负责的etl清洗工作自查开始 针对数据源清洗的字段 写脚本检查 socom网站主要是对地区 和行业进行了清洗 对其他字段做了替换多余字段处理 ,因此采取脚本检查,找到page_url和网站数据进行核查
where里面这样写便于查看某个字段的清洗情况
select * from etl2_socom_data where com_district is null and length(com_industry)-length(replace(com_industry,'-',''))=3
此页面数据和etl2_socom_data表最终清洗数据对比

网站页面数据
etl2_socom_data表数据
清洗工作完成。

Python爬虫数据应该怎么处理

2. 为什么写爬虫都喜欢用python

python的脚本特性,python易于配置,对字符的处理也非常灵活,加上python有着丰富的网络抓取模块,所以两者经常联系在一起。
作为一门编程语言而言,python是纯粹的自由软件,以简洁清晰的语法和强制使用空白符进行语句缩进的特点从而深受程序员的喜爱。使用python来完成编程任务的话编写的代码量更少,代码简洁简短可读性更强,一个团队进行开发的时候读别人的代码会更快,开发效率会更高,使工作变得更加高效。
这是一门非常适合开发网络爬虫的编程语言,相比于其他静态编程语言,python抓取网页文档的接口更简洁;相比于其他动态脚本语言,python的urllib2包提供了较为完整的访问网页文档的API。此外,python中有优秀的第三方包可以高效实现网页抓取,并可用极短的代码完成网页的标签过滤功能。这也就是为什么python被叫作爬虫的原因。

3. 为什么写爬虫都喜欢用 python

具体原因如下:
1、抓取网页本身接口
相比其他静态编程语言,如java、c#、c++,python抓取网页文档的接口更简洁,相比其他动态脚本语言,如shell、perl,python的urlib2包提供了较为完整的访问网页文档的api,当然,ruby也是很好的选择。
抓取网页有时需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。
这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requests,mechanize
2、网页抓取后的处理
抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。
其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。
python语言在linux上很强大,语言也非常简单。
快速开发:唯一能和python比开发效率的语言只有rudy,语言简洁,没有那么多技巧,所以读起来也更容易。
跨平台:由于python的开源,它比java更能体现“一次编写到处运行”。
解释性:无须编译,直接运行/调试代码。
构架选择太多:gui构架方面,主要的就有wxpython、tkinter、pygkt、pyqt。

为什么写爬虫都喜欢用 python

4. 用python写一个爬虫有多难

爬虫是互联网上最常见的一种东西了吧。
爬虫这东西每天都在网上爬大量的信息,各大搜索引擎厂商每天都有上百万的爬虫在网络上活动,这些爬虫的作用就是给搜索引擎采集互联网上最新的内容,采集来的内容经过分类、加工之后,进入搜索引擎的索引。这是爬虫最常见的应用。
关于搜索引擎的理论非常多,应该已经形成系统的理论和方法了。这里不再多追求搜索引擎的细节,只来看看爬虫如何爬有效的信息。
ps. 这个博客已经很久没有更新了。现在时间越来越少,平时鲜有时间来更新博客了。
最近某人发现,python其实是一种很适合写爬虫的语言,而且python越用越顺手。现在若是有人问我“c++和c#学哪一个?“之类的问题的时候,我一定会说,学python吧,因为生命短暂,你应该学习python。
所谓爬虫,就是把网页的html下载下来,然后从里面提取出来有用的信息,这些有用的信息一般就是正文,图片,链接一类的信息。
针对特定网站的爬虫就更好写了,用正则表达式,把网页里的链接信息找到,然后找到需要的信息,保存在本地,然后进入下一个链接重复上一次的过程。
下面的脚本演示如何从加菲猫的官网上把从1978年至今的所有漫画全部下载下来

import os,urllib,urllib2,re

hosts = "http://**********"
#initpos = "/mobile/garfield/1978/06/19"
initpos ="/mobile/garfield/1979/08/08"
pname = re.compile('''.+?(.*?)''')
pcomic = re.compile('''''')
pnext = re.compile('''''')

def getpage(url):
print url
req = urllib2.Request(url)
req.add_header("User-Agent","Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0")
req.add_header("If-None-Match","c1858c2845ca9501136ca83d624f8d4d")
u = urllib2.urlopen(req).read()
return u

def getnextpos(content,patten):
r = patten.findall(content)
for x in r:
print 'find next: ',x
return x

def savecomic(content,patten):
r = patten.findall(content)
print 'find commic:',r
r2 = pname.findall(content)
print 'find name:',r2
urlcomic = r[0]
u = urllib.urlopen(urlcomic).read()
name = r2[0].replace(' ','').split(',')
year = name[-1]
day = name[-2]
filename = 'test.jpg'
if not os.path.exists(year):
os.makedirs(year)
# is gif file ,the name the file as gif
if ((u[0] is 'G') and (u[1] is 'I') and (u[2] is 'F')):
filename = year+day+'.gif'
else:
filename = year+day+'.jpg'
f = file(year+"/"+filename,"wb+")
f.write(u)
f.close()

def main():
url = hosts+initpos
while(True):
c = getpage(url)
savecomic(c,pcomic)
u = getnextpos(c,pnext)
if u is None:
break
else:
url = hosts+u

if __name__ == '__main__':
main()

5. python爬虫需要会什么

python爬虫要学什么?让我们一起了解一下吧!1、学习计算机网络协议基础,了解一个完整的网络请求过程,大致了解网络协议(http协议,tcp-ip协议),了解socket编程,为后期学习爬虫打下扎实的基础。2、学习前端基础,你需要掌握html、css和JavaScript之间的关系,浏览器的加载过程,ajax、json和xml,GET、POST方法。3、学习python爬虫相关知识,比如最常使用的爬虫库requests,要知道如何用requests发送请求获取数据。网页定位和选取,比如beautifulsoup、xpath、css选择器,数据处理用正则表达式。4、学习数据存储知识,比如用python将抓取的数据自动导出Excel或者数据库中。拓展:爬虫python能做什么1、收集数据python爬虫程序可用于收集数据。这也是最直接和最常用的方法。由于爬虫程序是一个程序,程序运行得非常快,不会因为重复的事情而感到疲倦,因此使用爬虫程序获取大量数据变得非常简单和快速。2、调研比如要调研一家电商公司,想知道他们的商品销售情况。这家公司声称每月销售额达数亿元。如果你使用爬虫来抓取公司网站上所有产品的销售情况,那么你就可以计算出公司的实际总销售额。3、刷流量和秒杀刷流量是python爬虫的自带的功能。当一个爬虫访问一个网站时,如果爬虫隐藏得很好,网站无法识别访问来自爬虫,那么它将被视为正常访问。除了刷流量外,还可以参与各种秒杀活动,包括但不限于在各种电商网站上抢商品,优惠券,抢机票和火车票。今天的分享就是这些,希望能帮助到大家!

python爬虫需要会什么

6. 是不是Python会涉及到爬虫和数据分析?

学了Python基础之后,接下来应该做什么呢?
那就是用Python写写爬虫,用抓取到的数据再做数据分析。
这里有一份Python爬虫的视频资料:


还有Python数据分析的视频资料:

如果需要的话,点击这个链接即可免费领取:网页链接
祝你学有所成。

7. 为什么都说爬虫PYTHON好

选择Python作为实现爬虫的语言,其主要考虑因素在于:
(1) 抓取网页本身的接口
相比其他动态脚本语言(如Perl、Shell),Python的urllib2包提供了较为完整的访问网页文档的API;相比与其他静态编程语言(如Java、C#、C++),Python抓取网页文档的接口更简洁。
此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这时我们需要模拟User Agent的行为构造合适的请求,譬如模拟用户登录、模拟Session/Cookie的存储和设置。在Python里都有非常优秀的第三方包帮你搞定,如Requests或Mechanize。
(2) 网页抓取后的处理
抓取的网页通常需要处理,比如过滤Html标签,提取文本等。Python的Beautiful Soup提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。
其实以上功能很多语言和工具都能做,但是用Python能够干得最快、最干净,正如这句“Life is short,you need Python”。
(3) 开发效率高
因为爬虫的具体代码根据网站不同而修改的,而Python这种灵活的脚本语言特别适合这种任务。
(4) 上手快
网络上Python的教学资源很多,便于大家学习,出现问题也很容易找到相关资料。另外,Python还有强大的成熟爬虫框架的支持,比如Scrapy。

为什么都说爬虫PYTHON好

8. 爬虫技术可以分析数据吗?

目前在不少大数据团队中,数据分析和数据挖掘工程师通常都有明确的分工,数据采集往往并不是数据分析和挖掘工程师的任务,通常做爬虫的是大数据应用开发程序员或者是数据采集工程师(使用爬虫工具)的工作任务。但是对于数据分析工程师来说,掌握爬虫技术也是一个比较普遍的现象,原因有以下几点:

第一:数据分析师往往都会使用Python,而爬虫是Python比较擅长的开发内容。不少数据分析师在学习Python开发的时候都做过爬虫开发,其实不少Python程序员都会使用Python做爬虫,这是学习Python比较常见的实验。

第二:方便。不少数据分析工程师在学习的时候都会自己找数据,而编写爬虫是找数据比较方便的方式,所以很多数据分析工程师往往都会写爬虫。我在早期学数据分析的时候就是自己写爬虫,这是一个比较普遍的情况。

第三:任务需要。现在不少团队针对小型分析任务往往会交给一两个人来完成,这个时候往往既要收集数据、分析数据,还需要呈现数据,这种情况下就必须掌握爬虫技术了。这种情况在大数据分析领域是比较常见的,当然也取决于项目的大小。看一个使用Numpy和Matplotlib做数据分析呈现的小例子:

网络爬虫技术本身并不十分复杂(也可以做的十分复杂),在使用Python开发出一个爬虫程序之后,在很多场景下是可以复用的,只需要调整一些参数就可以了,所以爬虫技术并不难。对于数据分析人员来说,获得数据的方式有很多种,编写爬虫是一个比较方便和实用的手段,建议大数据从业人员都学习一下爬虫技术。
最新文章
热门文章
推荐阅读