爬虫实践教程1

一般来说呢,很多网页都是直接分好页面直接下一页这样。不过还有很多网页是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请求被列出来。偏移量是多少,需要好好总结规律,然后不断尝试。