欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

记一次简单的python爬虫实战

程序员文章站 2022-06-17 10:26:14
...

有位同学需要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表格。

 

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