Python爬取今日头条江歌案新闻

今天学习总结下爬取今日头条江歌案的新闻,今天头条用到了Ajax技术,所以用传统的索取网页元素的方法是获取不到内容的,之前我写了篇爬取拉钩上海Python职位信息,有兴趣的可以点开看看!

简书站外图片不能上传了么?上一篇的拉钩爬虫也是图片上传失败……大家有兴趣的可以去我博客,博客链接在最下面

第一步

用Chrome打开网页https://www.toutiao.com/search/?keyword=%E6%B1%9F%E6%AD%8C,打开开发者工具,红框内的信息是我们需要的,我们要抓取的数据就在data一栏中
[图片上传失败…(image-2b5cd5-1513863080036)]

我们再观察下网页信息,把网页不断的忘下翻,可以看到第一页是offset=0,往下翻过一个节点就是20,40,60这样递增上去
[图片上传失败…(image-bf43a2-1513863080036)]

好了,基本的分析完了,准备动手写代码

# -*- coding:utf-8 -*-
import requests
from urllib.parse import urlencode
from requests.exceptions import RequestException

def get_data():
    data = {
        'offset': 0,
        'format': 'json',
        'keyword': '江歌',
        'autoload': 'true',
        'count': '20',
        'cur_tab': 1,
        'from':'search_tab'
    }
    # urlencode(data)就是链接的解析
    url = 'https://www.toutiao.com/search_content/?' + urlencode(data)
    response = requests.get(url)
    try:
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        print('data is error')
        return None

def main():
    html = get_data()
    print(html)


if __name__ == '__main__':
    main()

运行下代码,返回了这样的数据

[图片上传失败…(image-8a70f-1513595350490)]

第二步

解析数据

我们可以看下data一栏下的网页数据
[图片上传失败…(image-d10b02-1513863080036)]

def parse_data(html):
    data = json.loads(html) # JSON 字符串解码为 Python 对象
    if data and 'data' in data.keys():
        news_list =[]
        for item in data.get('data'):
            news = {
                'title': item.get('title'), # 使用get()方法避免了部分keys不存在时报错
                'url': item.get('url'),
            }
            news_list.append(news)
        return news_list

解析后再次运行代码,这就是我们要的数据了
[图片上传失败…(image-b26291-1513863080036)]

第三步

可以爬下单页数据了,现在来看下怎么爬取多页面

第一步网页分析的时候,offset的数据是抓取多页面内容的关键,我们先创建一个配置文件config.py,再创建多进程调用map方法

GROUP_START = 1
GROUP_END = 20

    groups = [x * 2 for x in range(GROUP_START, GROUP_END + 1)]
    pool = Pool(8)
    pool.map(main, groups)
    pool.close()
    pool.join()
    print('ALl is done!')

最后运行代码,开启了多进程后爬取的效率可以说是坐了火箭
[图片上传失败…(image-200d36-1513863080036)]

完整代码在GitHub
GitHub
简书
欢迎访问我的博客Treehl的博客
最后放一个爬虫集合,是我最近学习Python写的,喜欢的亲!给个Star呗!!!
SpiderList

    原文作者:Treehl
    原文地址: https://www.jianshu.com/p/aa92ce8708e7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞