记一次简单的python爬虫实战
程序员文章站
2022-06-17 10:26:14
...
有位同学需要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表格。
如有错误,敬请批评指正。
下一篇: 关于WebAssembly的详细讲述