import requests
import json
from lxml import etree
import time
'''
注意,河北省博物馆这个网站。从第二页开始是这样匹配的replys = '///*[@class="liuyantiaotaio t110"]/tr/td[2]/p/span/text()'
第一页的回复语句replys = '///*[@class="liuyantiaotaio t110"]/tr/td[2]/p/text()' 就是没有这个span
'''
'''
自己总结的经验:
对于每页不规则网站一定要检查,这里是二分法爬取,比如共100页,先爬前50页,没问题,爬后50页,如果前50页有问题,
在前50页里面二分法爬取,一点一点定位,肯定有几页数据结构和其他页不一致,导致爬取顺序不一样,找出来,手工填写
'''
def get_info(i, data=None):
headers = {
"Content-Type": "application/json; charset=UTF-8",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36",
}
url = "http://www.hebeimuseum.org.cn/api/stl/actions/dynamic"
# 因为下一页是的href是js,有两种方法爬,第一种用selenium,第二种就是构造post请求,页码在post请求中展示出来,我用的这种方式
# 这种方式注意,爬取完是json格式的,我们得取他的value值,在转化成html的形式,这样结构就和原网页有点差距,xpath匹配时不能从头匹配了,我们打印出来,看内容自己写匹配语句。
# 那个页面 翻页是通过 ajax 异步刷新的, 所以只抓ajax调用的接口就行
formate = {
"publishmentSystemId": 1,
"pageNodeId": 60,
"pageContentId": 0,
"pageTemplateId": 4,
"isPageRefresh": "false",
"pageUrl": "qWZfgSqqIHil4y1y2m0add0HCx36j7GwwMx7",
"ajaxDivId": "ajaxElement_1_915",
"templateContent": "DeZxK0slash0baVKROiBLGeDyY0add0tpHWRP5U7Snmn1f
爬取的网页翻页是js的(构造post请求,ajax 异步刷新的, 只抓ajax调用的接口就行),然后保存固定格式
最新推荐文章于 2021-08-05 11:53:28 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)