当前位置:首页 » 编程语言 » python爬取数据

python爬取数据

发布时间: 2022-01-10 15:06:18

‘壹’ python爬取的数据如何去重说一下具体的算法依据

要具体问题具体分析的。看你要抓取什么数据。
最好能找到一个能够作为重复性区分的字段值。比如网络知道的所有提问,每个问题都有一个对应的id,楼主这个问题对应的id就是181730605611341844。那在爬取的过程中,可以将所有已经爬取的问题id保存在一个set()中,如果即将爬取的问题id已经存在了,那就跳过,反之则继续。
不知道楼主用的是什么数据库,在数据库设计中,也可以添加一些约束条件作为约束,保证数据的唯一性。

‘贰’ 如何用python爬取nba数据中心的数据

爬取的网站为:stat-nba.com,本文爬取的是NBA2016-2017赛季常规赛至2017年1月7日的数据

改变url_header和url_tail即可爬取特定的其他数据。

源代码如下:

[python]view plain

  • #coding=utf-8

  • importsys

  • reload(sys)

  • sys.setdefaultencoding('utf-8')

  • importrequests

  • importtime

  • importurllib

  • frombs4importBeautifulSoup

  • importre

  • frompyExceleratorimport*

  • defgetURLLists(url_header,url_tail,pages):

  • """

  • 获取所有页面的URL列表

  • """

  • url_lists=[]

  • url_0=url_header+'0'+url_tail

  • printurl_0

  • url_lists.append(url_0)

  • foriinrange(1,pages+1):

  • url_temp=url_header+str(i)+url_tail

  • url_lists.append(url_temp)

  • returnurl_lists

  • defgetNBAAllData(url_lists):

  • """

  • 获取所有2017赛季NBA常规赛数据

  • """

  • datasets=['']

  • foriteminurl_lists:

  • data1=getNBASingleData(item)

  • datasets.extend(data1)

  • #去掉数据里的空元素

  • foritemindatasets[:]:

  • iflen(item)==0:

  • datasets.remove(item)

  • returndatasets

  • defgetNBASingleData(url):

  • """

  • 获取1个页面NBA常规赛数据

  • """

  • QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017'

  • #html=requests.get(url).text

  • html=urllib.urlopen(url).read()

  • #printhtml

  • soup=BeautifulSoup(html)

  • data=soup.html.body.find('tbody').text

  • list_data=data.split(' ')

  • #withopen('nba_data.txt','a')asfp:

  • #fp.write(data)

  • #foriteminlist_data[:]:

  • #iflen(item)==0:

  • #list_data.remove(item)

  • returnlist_data

  • defsaveDataToExcel(datasets,sheetname,filename):

  • book=Workbook()

  • sheet=book.add_sheet(sheetname)

  • sheet.write(0,0,u'序号')

  • sheet.write(0,1,u'球队')

  • sheet.write(0,2,u'时间')

  • sheet.write(0,3,u'结果')

  • sheet.write(0,4,u'主客')

  • sheet.write(0,5,u'比赛')

  • sheet.write(0,6,u'投篮命中率')

  • sheet.write(0,7,u'命中数')

  • sheet.write(0,8,u'出手数')

  • sheet.write(0,9,u'三分命中率')

  • sheet.write(0,10,u'三分命中数')

  • sheet.write(0,11,u'三分出手数')

  • sheet.write(0,12,u'罚球命中率')

  • sheet.write(0,13,u'罚球命中数')

  • sheet.write(0,14,u'罚球出手数')

  • sheet.write(0,15,u'篮板')

  • sheet.write(0,16,u'前场篮板')

  • sheet.write(0,17,u'后场篮板')

  • sheet.write(0,18,u'助攻')

  • sheet.write(0,19,u'抢断')

  • sheet.write(0,20,u'盖帽')

  • sheet.write(0,21,u'失误')

  • sheet.write(0,22,u'犯规')

  • sheet.write(0,23,u'得分')

  • num=24

  • row_cnt=0

  • data_cnt=0

  • data_len=len(datasets)

  • print'data_len:',data_len

  • while(data_cnt<data_len):

  • row_cnt+=1

  • print'序号:',row_cnt

  • forcolinrange(num):

  • #printcol

  • sheet.write(row_cnt,col,datasets[data_cnt])

  • data_cnt+=1

  • book.save(filename)

  • defwriteDataToTxt(datasets):

  • fp=open('nba_data.txt','w')

  • line_cnt=1

  • foriinrange(len(datasets)-1):

  • #球队名称对齐的操作:如果球队名字过短或者为76人队是球队名字后面加两个table否则加1个table

  • ifline_cnt%24==2andlen(datasets[i])<5ordatasets[i]==u'费城76人':

  • fp.write(datasets[i]+' ')

  • else:

  • fp.write(datasets[i]+' ')

  • line_cnt+=1

  • ifline_cnt%24==1:

  • fp.write(' ')

  • fp.close()

  • if__name__=="__main__":

  • pages=int(1132/150)

  • url_header='hp?page='

  • url_tail='&QueryType=game&order=1&crtcol=date_out&GameType=season&PageNum=3000&Season0=2016&Season1=2017#label_show_result'

  • url_lists=getURLLists(url_header,url_tail,pages)

  • datasets=getNBAAllData(url_lists)

  • writeDataToTxt(datasets)

  • sheetname='nbanormaldata2016-2017'

  • str_time=time.strftime('%Y-%m-%d',time.localtime(time.time()))

  • filename='nba_normal_data'+str_time+'.xls'

  • saveDataToExcel(datasets,sheetname,filename)



‘叁’ Python 最简单爬虫爬取数据(一):如何请求

import requests

url=‘http://www..com’
r = requests.get(url,timeout=10)
r.raise_for_status()
r.encoding = r.apparent_encoding
print( r.text)

‘肆’ 怎么使用python爬取百度网的数据

档案系统初期算是告一段落了,利用一点时间继续爬取POI。和领导聊聊,受益匪浅。之前我的想法是爬取一份poi数据,直接能用;而领导听了之后,觉得更好的方式是爬取多个渠道来源的POI数据,然后做一个数据比较融合(最终事情能不能成不好说,但是经过这么一回,细节技术上有所提高,宏观把控整体项目流程能力有所长进,更重要的是通过和能人交流,以更高的眼界更宏观的看待数据、应用以及问题,这就是成长)。 我之前采用的方式,可以满足需求,但是POI数据获取效率差一些(虽然已经很快,但是相比本文这种还是慢一些)、数据现势性不好,高德数据和网络数据虽然是两套,但是仅仅是坐标不同(所以显然还是一套)。所以,我加一种方式来爬取网络poi。
一 调研: 网络API提供了一个叫Place API获取poi的接口,有个城市内检索 实例为

ce/v2/search?query=银行&page_size=10&page_num=0&scope=1®ion=北京&output=json&ak={您的密钥}
它返回的是个json类型数据,一个区域最大返回数为400,每页最大返回数为20。显然一个城市内不管什么类别的poi,不可能只有400个,会遗漏数据,故舍去

还有一个矩形区域检索,实例为
u.com/place/v2/search?query=美食&page_size=10&page_num=0&scope=1&bounds=39.915,116.404,39.975,116.414&output=json&ak={您的密钥}只要区域划分得当,这个可以使用
二 要解决的问题
1 区域划分
网上有人通过递归写代码的方式来划分,这样划分有问题,第一,划分的区域不能完全对应一个城市的市区;第二,算法设计比较麻烦。解决办法,后面详细说。
2 类别问题
网络API的接口必须要指定query的类别,那么如果类别指定不准,或者类别不全,根本无法完成爬取一个城市所有poi的任务。解决办法,说实话,这个问题在我做这件事情的时候,
十分棘手,不过我最终找到了这个网页
/index.php?title=lbscloud/poitags,一切都不是问题了
三 整体流程
1 区域划分,2km*2km的区域基本可以满足需求,获取每个区域的对角坐标(经纬度),逐行写入一个txt文本里
2 爬虫程序编写 读取1中的txt文本,逐行循环;调用网络API接口,爬取json;将爬取的数据存入数据库中; 每个类别跑一次程序
3 爬下的POI数据处理 poi显示,投影坐标转换,与地图叠加

后文将详细介绍流程

‘伍’ 怎么用python爬取相关数据

以下代码运行通过:

importrequests
frombs4importBeautifulSoup
importos


headers={
'User-Agent':"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.1(KHTML,likeGecko)"
"Chrome/22.0.1207.1Safari/537.1"}
##浏览器请求头(大部分网站没有这个请求头会报错)
all_url='http://www.mzitu.com/all'
start_html=requests.get(all_url,headers=headers)
##使用requests中的get方法来获取all_url的内容headers为请求头
print(start_html.text)
##打印start_html
##concent是二进制的数据,下载图片、视频、音频、等多媒体内容时使用concent
##打印网页内容时使用text

运行效果:

‘陆’ python 爬取的数据导出到excel

把print出来的,都存到一个list里。
all_case=['姓名','张三','年龄','18'...]
b=[]
x=0
y=0
for i in range(0,len(all_case),2):
b = all_case[i:i+2]
for i in b:

ws.write(x,y,i,style)

x+=1
y+=1

x=0

wtbook.save(path_dst)

上面是核心内容,你理解一下。就是将list变为2个元素一组的小list,然后对小list按行写入,写完到下一个小list再回到第一行。
写完发现没有格式啊。。。注意一下x+=1和里面for是一组。y+=1和x=0和外面的for是一组。

‘柒’ python爬数据

withopen('文本文档(1)','r')asfin:
withopen('文本文档(2)','w')asfout:
forlineinfin:
if'food'inline:
fout.write(line)

‘捌’ python爬虫数据提取

理论上可以,实际要看目标网页的情况,反爬虫机制、js动态刷新抓取都是比较头疼的。
当然如果不考虑效率,selenium 之类的网页自动化方式,通常都可以实现。

‘玖’ python爬虫爬取的数据可以做什么

爬虫的概念是,爬取网上能看到的数据,也就是只要网上存在的,通过浏览器可以看到的数据。爬虫都可以爬取。爬虫爬取的原理就是伪装成浏览器,然后进行爬取操作

哪些数据你需要你就可以爬取。比如爬取公司竞争对手的商业数据,爬取电影,音乐,图片等等的。只要你希望得到的,前提浏览器可以访问的都可以爬取

热点内容
3k我的使命脚本 发布:2024-09-20 18:11:43 浏览:689
建设银行密码怎么设置 发布:2024-09-20 18:11:04 浏览:95
聚合脚本平台 发布:2024-09-20 17:51:55 浏览:180
访问拦截怎么解除安卓 发布:2024-09-20 17:28:48 浏览:275
萝卜干存储 发布:2024-09-20 17:21:37 浏览:716
苹果手机如何迁移软件到安卓手机 发布:2024-09-20 17:21:34 浏览:692
查看服务器ip限制 发布:2024-09-20 16:56:27 浏览:389
p搜系统只缓存1页为什么 发布:2024-09-20 16:48:51 浏览:841
上网的账号和密码是什么东西 发布:2024-09-20 16:31:31 浏览:612
安卓手机王者荣耀如何调超高视距 发布:2024-09-20 16:31:30 浏览:428