1.对于爬取静态网页:
思路就是直接拼接每个页面的url,得到一个超大的url 的list,然后一个一个的request.get(url),然后xpath解析内容,存入mongo或者用logger.info(json.dumps(data)) 存为csv文件
- 对于动态加载的网页,一个思路就是用抓包工具分析其数据接口:我是用的fiddler,利用fiddler查看打开网页时数据加载的接口,一般是 {JSON} 格式,找到接口的地址,分析其接口中参数的规律,然后又是老操作(拼接出所有页面的数据的请求接口,然后再一个一个的遍历请求接口,得到json格式的数据),这个其实对于数据清洗来说很方便,不用做什么格式解析.
3.Fiddler 突然不能抓取请求了怎么办
3.1 Fiddler 打开后,浏览器不能打开网页,我的办法是卸载Fiddler ,重装,简单粗暴(因为Fiddler 只有6m大小,方便快捷)
迅雷下载: https://dl.softmgr.qq.com/original/Development/FiddlerSetup_5.0.20202.18177.exe
4.源代码:
import json
import multiprocessing
import os
import random
import time
import requests
from pprint import pprint
from fake_useragent import UserAgent
from loguru import logger
from motor.motor_asyncio import AsyncIOMotorClient
# from redis import Redis
from redis import Redis
class ETh():
def redis_connect(self):
# myredis=Redis(db=6)
myredis=Redis(db=6)
return myredis
def get_all_url(self):
for i in range(1, 62):
url=f"https://explorer-web.api.btc.com/v1/eth/txns/0?page={i}&size=150"
self.redis_connect().lpush("redis_connect_urls", url)
print(f'push 第{i}页 to redis')
self.redis_connect().close()
def read_page(self, url):
#