记一次简单的python爬虫实战

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

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

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

     《记一次简单的python爬虫实战》

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

《记一次简单的python爬虫实战》

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

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

《记一次简单的python爬虫实战》

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

《记一次简单的python爬虫实战》

那就写代码了:

# -*- 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表格。

 

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

    原文作者:zhang_li_ke
    原文地址: https://blog.csdn.net/zhang_li_ke/article/details/89691074
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞