记一次简单的python爬虫实战

有位同学需要http://www.sara.gov.cn/old/csjbxx/index.htm这个网站中佛教的一些信息。

在网站上选择“佛教”后就进行检索,根据页面获取数据的规律寻找获取数据的api——通过google浏览器的 右键-》检查 能够较快完成该工作。

检索之后能够得到下面的数据:

     

在这张图片的任意地方右键-》检查,不难找到下面的这张图:

这张图中关键是:<form action="/cms/webs/PlaceSelect.do"......>这样子还是不能够得到具体的接口,但起码有一定的了解了。

接下来,在现在的页面中,选择 network,并且点击页面的下一页:

哦也,看到接口api了。拉下去下面可以看到,请求的参数数据:

那就写代码了:

# -*- coding: utf-8 -*-
"""
Created on Mon Apr 29 19:33:43 2019

@author: zhanglike
"""

import  requests
from lxml import etree
import time

from openpyxl import workbook  # 写入Excel表所用
from openpyxl import load_workbook  # 读取Excel表所用

url="http://www.sara.gov.cn/cms/webs/PlaceSelect.do"     #action属性
ws  # 全局工作表对象

wb = workbook.Workbook()  # 创建Excel对象
ws = wb.active  # 获取当前正在操作的表对象
# 往表中写入标题行,以列表形式写入
ws.append(['宗教', '派别', '场所名称', '地址', '负责人姓名'])

num = 34100
totalPage=3410


#for i in range(1,342):
for i in range(1,11):
    params={ "source":"index_nav",               #input标签下的name
             "pageSize":"10",                #input标签下的name
             "province":"null" ,             #input标签下的name
             "city":"null",
             "town":"null",
             "zj":"佛教",
             "pb":"null",
             "queryStr":"null",
             "pageNum":i
             }
    html=requests.post(url,data=params)#请求数据
    time.sleep(3)#防止请求过快,被网站拉黑
    res = html.text
    #print(res)
    html = etree.HTML(res)  #分析HTML,返回DOM根节点
    #result1 = html.xpath(' //table//tr[1]//text()')
    for j in range(2,11):
        zj = html.xpath(' //table//tr['+str(j)+']//text()')[1]
        pb = html.xpath(' //table//tr['+str(j)+']//text()')[3]
        cs = html.xpath(' //table//tr['+str(j)+']//text()')[5]
        dz = html.xpath(' //table//tr['+str(j)+']//text()')[7]
        name = html.xpath(' //table//tr['+str(j)+']//text()')[9]
        print("name:",name)
        ws.append([zj,pb,cs,dz,name])
        
wb.save('test.xlsx')  # 存入所有信息后,保存为filename.xlsx

代码的基本思路是:

获取网站数据==》分析html结构==》尝试获取需要的数据==》写入保存excel表格。

 

如有错误,敬请批评指正。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值