一般来说呢,很多网页都是直接分好页面直接下一页这样。不过还有很多网页是ajax异步请求数据的网页,以果壳网为例,我们尝试一下抓取。
# coding:utf-8
from bs4 import BeautifulSoup
import requests
import json
import pymongo
url = 'http://www.guokr.com/scientific/'
def dealData(url):
client = pymongo.MongoClient('localhost', 27017)
guoke = client['guoke']
guokeData = guoke['guokeData']
web_data = requests.get(url)
datas = json.loads(web_data.text)
print datas.keys()
for data in datas['result']:
guokeData.insert_one(data)
def start():
urls = ['http://www.guokr.com/apis/minisite/article.json?retrieve_type=by_subject&limit=20&offset={}&_=1462252453410'.format(str(i)) for i in range(20, 100, 20)]
for url in urls:
dealData(url)
start()
'''
异步加载的网站 这里比如果壳网的抓取
'''
网页的抓取大概流程就是这样:
1.使用谷歌或者火狐浏览器,检查元素,分析下我们想抓取什么,有啥子障碍。
2.异步加载的数据不在返回的网页源码中,在网络标签和xhr分页面,向下滑动鼠标可以发现新的get请求被列出来。偏移量是多少,需要好好总结规律,然后不断尝试。