前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬取恩芝数据

爬取恩芝数据

作者头像
kirin
发布2020-05-09 15:40:37
8070
发布2020-05-09 15:40:37
举报
文章被收录于专栏:Kirin博客

今天闲着无聊的时候逛qq群,看到有个教python的qq群里有个老师在爬这个网站http://www.endata.com.cn

看到是请求数据后返回的是json数据,比用xpath解析简单多了,于是乎,爬!!!

下面是全部代码,还有些细节可以优化的。。。。用得到的话自己优化下吧。

代码语言:javascript
复制
import requests
 import time
 import json
 import csv
 headers={
 ‘user-agent’:’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3722.400 QQBrowser/10.5.3751.400′,
}
with open(‘text111.csv’, ‘a+’, newline=”, encoding=’utf-8′)as ff: # 给表的第一行加上表头
 csw = csv.writer(ff, dialect=’excel’)
 csw.writerow([‘排名’,’ID’,’电影名’,’英文名称’,’上映年份’,’票房’])
# 保存为csv文件定义函数
 def write(a,b,c,d,e,f):
 with open(‘text111.csv’,’a+’,newline=”,encoding=’utf-8′)as ff:
 csw=csv.writer(ff,dialect=’excel’)
 csw.writerow([a,b,c,d,e,f])
# 我把构造post请求的from表单和requests写在一起了,看着有点乱。。。
 def main(xx):
 time.sleep(0.8) # 每一条暂停0.8s,防止被封ip,我的代理池1星期没有维护了,代理ip都失效了。。。。
 n=1
 for page in range(1,xx):
 data = {
 ‘areaId’: ’50’,
 ‘typeId’: ‘0’,
 ‘year’: ‘0’,
 # ‘initial’: ,
 ‘pageIndex’: f'{page}’, # ajax 通过post表单改变来提交获取数据,所以这里需要变化
 ‘pageSize’: ’10’,
 ‘MethodName’: ‘BoxOffice_GetMovieData_List’
 }
 try: # 错误捕捉,保证发生错误也会继续的爬下去,
 url=’http://www.endata.com.cn/API/GetData.ashx’
 html=requests.post(url,headers=headers,data=data)
 a=json.loads(html.text) # 用json 转化成本地的字典
 q=a[‘Data’][‘Table’]
 for x in q:
 no=x[‘rowNum’] # 对字典的处理部分
 id=x[‘ID’]
 name=x[‘MovieName’]
 MovieEnName=x[‘MovieEnName’]
 releaseYear=x[‘releaseYear’]
 amount=x[‘amount’]
 write(no,id,name,MovieEnName,releaseYear,amount)
 print(‘写入完成’,’第’,n,’页’)
 n+=1
 except Exception as e:
 print(‘出错了’,e) # 异常捕捉
 continue
 if __name__ == ‘__main__’:

main(100) # 调用函数 里面填写的数值为需要爬取的页数 1页十条数据

  1. files = open(path,“w”)
  2. files.write(codecs.BOM_UTF8)
  3. files.write(“,”.join(“%s” % v for v in csv_header)) 我打开csv文件查看后发现乱码,因为windows是gbk的 用上面第二行代码可以解决乱码问题

好了,结束

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档