精华内容
下载资源
问答
  • 爬取今日头条

    2019-04-09 10:13:11
    python爬取今日头条 学习爬虫有一段时间了,今天做个实战小项目,爬取今日头条的热点。很多人都喜欢刷头条, 本次将会爬取热点页面,每隔30秒抓取一次,并以追加的方式保存入文件中 难度:简单 工具: python:...

    python爬取今日头条

    	学习爬虫有一段时间了,今天做个实战小项目,爬取今日头条的热点。很多人都喜欢刷头条,
    	本次将会爬取热点页面,每隔30秒抓取一次,并以追加的方式保存入文件中
    

    难度:简单

    工具:

    1. python:3.7(anaconda)
    2. 编辑器:pycharm2019.1
    3. 使用的模块:requests、json、time

    关于pycharm的激活,有需要的朋友可以参考我的博客:pycharm/idea激活

    思路:

    1. 首先要有一个账号,可以用QQ登录,然后进入头条官网,找到"热点"栏目。
    2. 获取到对应热点栏目的url、cookie、user-anent
    3. 代码实现目标内容的抓取

    上手:

    1. 登录进入到目标页面之后,取得需要的信息。
      在这里插入图片描述
    2. 很容易想到,头条的热点栏目可以只刷新一部分内容,所以应该是用ajax实现的
      所以真正的内容在HTML代码中获取不到。打开network->XHR,可以看到,热点信息就在里面在这里插入图片描述
    3. 代码实现
    # 时间:2019-4-8
    # 内容:爬取今日头条的热点栏目
    
    import requests
    import json
    import time
    
    
    _url = "https://www.toutiao.com/api/pc/feed/?category=news_hot&utm_source=toutiao&widen=1&max_behot_time=1554765316&max_behot_time_tmp=1554765316&tadrequire=true&as=A1250C3AEBADDD2&cp=5CABCDED7D427E1&_signature=Fz.gqgAAS5i9EKAq5BB9EBc.4L"
    _headers = {
        'cookie': 'tt_webid=6677522179426485774; WEATHER_CITY=%E5%8C%97%E4%BA%AC; UM_distinctid=169fd3c82d31d-03d38d9bfe605d-77103a49-100200-169fd3c82d41d5; tt_webid=6677522179426485774; csrftoken=29a9338e5f4bc1c2fd7fe29e5caf39c5; sso_uid_tt=d28e7e0d21e1ff621101e7f4d06c25de; toutiao_sso_user=56b1c51186f1dca408808ec2a7153851; login_flag=6413115c5ffc0dc3955803ad1d951ff5; sessionid=cd2c4291a9d47c540ec712e3b298b401; uid_tt=f418766df0e6eb1a6da8f965c6da76a8; sid_tt=cd2c4291a9d47c540ec712e3b298b401; sid_guard="cd2c4291a9d47c540ec712e3b298b401|1554731811|15552000|Sat\054 05-Oct-2019 13:56:51 GMT"; __tasessionId=gvgwyytsx1554767065092; CNZZDATA1259612802=152351107-1554731013-https%253A%252F%252Fwww.baidu.com%252F%7C1554762386',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3642.0 Safari/537.36'
    
    }
    
    
    # 获取json文件
    def get_info(url, headers):
        response = requests.get(url,headers=headers)
        return response
    
    
    # 将有用的信息保存到文件中
    def save(response):
        file = open("toutiao.json", "a", encoding="utf-8")
        # 有用信息包含在response.json()["data"]中
        json.dump(response.json()["data"],file,ensure_ascii=False)
    
    
    # 主函数,调用获取和保存的函数成果
    def run(url, headers):
        for i in range(10):
            response = get_info(url, headers)
            save(response)
            time.sleep(30)
        return
    
    
    if __name__ == '__main__':
        run(_url,_headers)
    
    

    成果
    这里把多次抓取的信息保存在同一个接送文件中是有问题的
    抓取的内容可以去https://www.json.cn/去解析预览

    end~~~~~~~~~

    展开全文
  • Python3爬取今日头条有关《人民的名义》文章最近一直在看Python的基础语法知识,五一假期手痒痒想练练,正好《人民的名义》刚结束,于是决定扒一下头条上面的人名的名义文章,试试技术同时可以集中看一下大家的脑洞...

    Python3爬取今日头条有关《人民的名义》文章

    最近一直在看Python的基础语法知识,五一假期手痒痒想练练,正好《人民的名义》刚结束,于是决定扒一下头条上面的人名的名义文章,试试技术同时可以集中看一下大家的脑洞也是极好的。

    首先,我们先打开头条的网页版,在右上角搜索框输入关键词,通过chrome调试工具,我们定位到头条的search栏调用的的API为:

    http://www.toutiao.com/search_content/?offset=0&format=json&keyword=%E4%BA%BA%E6%B0%91%E7%9A%84%E5%90%8D%E4%B9%89&autoload=true&count=20&cur_tab=1

    其返回的数据是标准的json,所有的相关文章链接在data中,key值为article_url,好准备工作完成,我们开始动手coding。

    首先,我们构造头条必要的search条件:

    query_data = {

    ‘offset‘: offset,

    ‘format‘: ‘json‘,

    ‘keyword‘: ‘人民的名义‘,

    ‘autoload‘: ‘true‘,

    ‘count‘: 20, # 每次返回 20 篇文章

    ‘cur_tab‘: 1

    }

    当然,我们除了search参数之外,还需要必要的header头信息,仔细查看之后我们可以看到,

    我们只选取其中必要的信息,不放cookie;

    然后是编码查询条件

    其中_get_query_string方法将query_data编码;

    拿到article_req之后解析获取当前搜索结果的所有文章链接,实现如下:

    获取到文章链接之后,我们打开每一个url进行解析。

    此处,我们简单地对article_content进行解析,取出文章标题、内容和图片。

    解析完成之后,我们将内容保存到mongo中,方便后续的取数分析。

    然后我们运行一下程序,

    运行程序的时候我们发现,通过search来搜索最后得到的文章数量有限,只有几十篇文章,估计是头条的限制。

    下一篇我们将介绍如何通过一篇文章和相关推荐进行链式爬取所有的关联推荐文章。

    展开全文
  • python爬取今日头条视频
  • 爬取今日头条Ajax请求

    2020-10-17 20:37:00
    今天小编就为大家分享一篇关于爬取今日头条Ajax请求的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 搜索头条可以得到这个网址:开发者工具查看:我们在搜索中并没有发现上面的文字,那么我们可以初步判定,这个由Ajax加载,然后渲染出来的。此时切换到xhr过滤,可以看到确实是ajax请求。观察请求的特点,发现只有...

    搜索头条

    可以得到这个网址:

    开发者工具查看:

    我们在搜索中并没有发现上面的文字,那么我们可以初步判定,这个由Ajax加载,然后渲染出来的。此时切换到xhr过滤,可以看到确实是ajax请求。

    观察请求的特点,发现只有offset是改变的,而且一次加20,。

    我们可以用它来控制数据分页,然后把图片下载下来。代码如下:

    import requests

    import os

    from urllib.parse import urlencode

    from hashlib import md5

    from multiprocessing.pool import Pool

    from requests import codes

    def get_page(offset):

    params = {

    "offset":offset,

    "format":"json",

    "keyword":"街拍",

    "autoload":"true",

    "count":"20",

    "cur_tab":"1",

    "from":"search_tab"

    }

    url = 'https://www.toutiao.com/search_content/?'+urlencode(params)

    try:

    response = requests.get(url)

    if response.status_code == 200:

    # print(url)

    return response.json()

    except requests.ConnectionError:

    return None

    # get_page(0)

    def get_images(json):

    if json.get('data'):

    for item in json.get('data'):

    if item.get('cell_type') is not None:

    continue

    title = item.get('title')

    images = item.get('image_list')

    for image in images:

    yield {

    'title':title,

    'image':'https:' + image.get('url'),

    }

    def save_image(item):

    #os.path.sep 路径分隔符‘//'

    img_path = 'img' + os.path.sep + item.get('title')

    if not os.path.exists(img_path):

    os.makedirs(img_path)

    try:

    resp = requests.get(item.get('image'))

    # print(type(resp))

    if codes.ok == resp.status_code:

    file_path = img_path + os.path.sep + '{file_name}.{file_suffix}'.format(

    file_name=md5(resp.content).hexdigest(),#md5是一种加密算法获取图片的二进制数据,以二进制形式写入文件

    file_suffix='jpg')

    if not os.path.exists(file_path):

    with open(file_path,'wb')as f:

    f.write(resp.content)

    print('Downladed image path is %s' % file_path)

    else:

    print('Already Downloaded',file_path)

    except requests.ConnectionError:

    print('Failed to Save Image,item %s' % item)

    def main(offset):

    json = get_page(offset)

    for item in get_images(json):

    print(item)

    save_image(item)

    GROUP = 0

    GROUP_END = 2

    if __name__ == '__main__':

    pool = Pool()

    groups = ([x*20 for x in range(GROUP,GROUP_END)])

    pool.map(main,groups) #将groups一个个调出来传给main函数

    pool.close()

    pool.join() #保证子进程结束后再向下执行 pool.join(1) 等待一秒

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    展开全文
  • 爬虫脚本项目源码-爬取今日头条评论
  • 课程链接讲师的公众号文章:今日头条数据抓取及持久化(完整代码版,含IP和用户代理)​mp.weixin.qq.com课程代码抓取并持久化user-agent工具utils.py对于爬虫工具,需要设置发起请求的user-agent,import fake-...

    课程链接

    讲师的公众号文章:今日头条数据抓取及持久化(完整代码版,含IP和用户代理)​mp.weixin.qq.comb93a1e986a70fb6d94565d8b7857097c.png

    课程代码

    抓取并持久化user-agent工具utils.py

    对于爬虫工具,需要设置发起请求的user-agent,import fake-useragent可以实现,但是每次更换user-agent都要发起网络请求,并不是好办法,所以比较好的做法是:抓取文件,本地json存储备用。

    怎么找到fake-useragent到哪里取数的,截图如下:

    utils.py代码如下:

    """

    这个工具的目的是把fake_useragent的user_agent下载下来,存储文件使用

    from fake_useragent import UserAgent

    https://fake-useragent.herokuapp.com/browsers/0.1.11

    """

    import requests

    import json

    import random

    """

    json的方法中 dump,dumps,load,loads的区别

    dump/load,是操作文件的

    dumps/loads,是处理json和字符串直接相互转换的

    作业:拿到标签并存储起来

    """

    browser_info_file = "browser_info.json"

    user_agent_url = "https://fake-useragent.herokuapp.com/browsers/0.1.11"

    def write_browser_info_to_file():

    my_user_agent = requests.get(user_agent_url)

    with open(browser_info_file, "w") as f:

    # 写进去就是JSON,方便用json.load读取

    json.dump(my_user_agent.text, f)

    # f.write 的写入方式,是个字符串,json.load就会有问题

    # f.write(my_user_agent.text)

    def get_random_browser():

    file = open(browser_info_file, 'r')

    #

    agent_json = json.load(file)

    #

    agent_json = json.loads(agent_json)

    browsers = agent_json["browsers"]

    # 随机出来一个浏览器类型

    i = random.randint(0, len(browsers) - 1)

    if i == 0:

    browser_name = "chrome"

    elif i == 1:

    browser_name = "opera"

    elif i == 2:

    browser_name = "internetexplorer"

    else:

    browser_name = "safari"

    final_browser = browsers[browser_name][random.randint(0, len(browsers[browser_name]))]

    return final_browser

    if __name__ == '__main__':

    write_browser_info_to_file()

    print(get_random_browser())

    抓取热门文章tags并存储-toutiao_spider.py

    import requests

    import time

    import json

    import pandas as pd

    import re

    from part1.utils import get_random_browser

    # 定义Http请求的headers/proxies

    def get_request_url_and_headers():

    user_agent = get_random_browser()

    current_time = int(time.time())

    # 我要到哪里去

    # 头条的这个,去掉:_signature,否则抓不到数

    request_url = "https://www.toutiao.com/api/pc/feed/?max_behot_time=" \

    + str(current_time) \

    + "&category=news_hot&utm_source=toutiao&widen=1&tadrequire=true&as=A1751D55DE389D7&cp" \

    "=5D5E38E9CDA7BE1"

    # 我怎么来,我骑着自行车来

    headers = {

    "user-agent": user_agent

    }

    # 我从哪里来,我从东土大唐而来

    # 搜索引擎搜"免费IP地址"能找到可用的代理

    proxies = {

    "url": "http://114.235.23.172:9000"

    }

    return request_url, headers, proxies

    # 发起Http请求,抓取网页内容,如果发生错误,重试一次

    def get_response_json():

    request_url, headers, proxies = get_request_url_and_headers()

    response = requests.get(request_url, headers=headers, proxies=proxies)

    # print(response.text.encode("utf-8").decode("unicode_escape"))

    response_json = json.loads(response.text)

    if response_json["message"] == "error":

    response_json = get_response_json()

    return response_json

    # 抓取头条热点新闻数据,存入json备用

    def data_to_file():

    data = get_response_json()["data"]

    for i in range(len(data)):

    data_dict = data[i]

    with open("toutiao.json", "a+") as f:

    json.dump(data_dict, f, ensure_ascii=False)

    f.write("\n")

    df = pd.read_json("toutiao.json", lines=True)

    df.to_excel("toutiao.xlsx")

    # 抓取热门文章的标签,并存储备用

    def get_news_tag():

    df = pd.read_json("toutiao.json", lines=True)

    tags_pure = []

    request_url, headers, proxies = get_request_url_and_headers()

    for i in range(len(df)):

    news_url = "https://www.toutiao.com" + df["source_url"][i]

    # print(news_url)

    response = requests.get(news_url, headers=headers, proxies=proxies)

    reg = r'"name":".*?"}'

    tags = re.findall(reg, response.text)

    tags_pure_row = []

    if len(tags) <= 0:

    tags_pure.append([])

    continue

    for j in range(len(tags)):

    tags_pure_row.append(tags[j].replace('"name":"', '').replace('"}', ''))

    tags_pure.append(tags_pure_row)

    df["tags"] = tags_pure

    df.to_excel("toutiao_with_tags.xlsx")

    if __name__ == '__main__':

    # print(get_request_url_and_headers())

    # print(get_response_html())

    # data_to_file()

    get_news_tag()

    实现展示

    展开全文
  • 爬取今日头条图片
  • abstract)99 response =self.session.get(img_url)100 img_content =response.content101 params.append([title, abstract, img_content])102 103 with open(f'/home/geoffrey/图片/今日头条/{title}-{index}.jpg',...
  • python爬虫爬取今日头条街拍美女图片,并按照标题建立文件夹保存在本地文件夹内
  • # 今日头条--街拍import requestsfrom urllib.parse import urlencodeimport osfrom hashlib import md5from multiprocessing.pool import Pool# 根据 offset 得到每一个 ajax 请求返回的 jsondef get_json(offset):...
  • java爬取今日头条文章

    2019-09-15 07:59:59
    闲来无事,写了个爬虫爬取今日头条的文章信息,然后使用ECharts展示出统计结果。 那么怎样爬取今日头条的信息呢? 首先,分析头条页面 文章是通过ajax获取的 所以要找到调用的url,然后跟踪代码查看url所需...
  • 本文内容参考来自:今日头条街拍图集首页是利用ajax异步加载方式加载数据。详情页组图的URL在html页面的javascript中,使用正则表达式匹配。街拍图集首页街拍图集首页请求参数返回json格式数据返回json数据的data中...
  • 分析Ajax来爬取今日头条街拍美图,抓取搜索页内容,抓取详情页内容,开启循环及多线程,下载图片与保存数据库
  • 根据指定标签爬取今日头条文章图片并存储
  • 爬取今日头条图片

    2018-01-16 01:22:29
    用requests+正则表达式+BeautifulSoup爬取今日头条的美图! import json import os import pymongo import requests import requests.exceptions import re from bs4 import BeautifulSoup from hashlib import md5...
  • 随着今日头条内部代码的不断升级改版,现在网上一些爬取今日头条街拍美图的代码显然不能适用,我利用周末的时间研究了一下如何用Ajax爬取今日头条街拍美图,今天就和大家分享一下这个项目。 背 景 有时候当我们用...
  • Ajax爬取今日头条

    2018-08-13 10:52:30
    目标:爬取今日头条街拍图高清图集   目标网站分析: (索引页分析) 1.进入页面,滑下鼠标,发现新的页面不断加载 容易知道图集索引页的网页是由后台ajax数据通过js渲染成的,由动态页面解析的逆向思路,在...
  • Ajax爬取今日头条照片

    2020-10-15 19:39:29
    ##### 爬取今日头条照片 p247 import requests import os from multiprocessing.pool import Pool from hashlib import md5 from urllib.parse import urlencode def get_page(offset): base_url = '...
  • 之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能...比如今日头条:浏览器呈现的网页如下图所示:查看源码,却是如下图所示:网页的新闻在HTML源码中一条都找不到,全是由JS动态生成加载。遇到这...
  • scrapy爬取今日头条图片保存至本地 之前用requests爬取过今日头条街拍的图片,当时只是爬取每篇文章的缩略图,今天尝试用scrapy来大规模爬取街拍详细图片。 分析页面 今日头条的内容是以Ajax加载而成的,我们爬取...
  • 网上也有爬取今日头条图片的案例,但是很多都过时了,为了练习代码,本人亲自写了一个,网上其它案例没有那么复杂,我写的有点复杂化了,不过也比较详细。获取索引页的链接常规方法,对此页面发送请求,如对搜索发.....
  • Python3从零开始爬取今日头条的新闻【一、开发环境搭建】Python3从零开始爬取今日头条的新闻【二、首页热点新闻抓取】Python3从零开始爬取今日头条的新闻【三、滚动到底自动加载】Python3从零开始爬取今日头条的新闻...
  • 使用python对json文件的分析爬取今日头条的文章并进行处理.
  • 爬取今日头条新闻selenium

    千次阅读 2019-03-23 11:14:39
    from selenium import webdriver, ...# 爬取今日头条的新闻 browser = webdriver.Chrome() browser.maximize_window() browser.get("https://www.toutiao.com/ch/news_finance/") time.sleep(3) # 获取13条网页文章 ...
  • 项目来源网页 https://www.cnblogs.com/qun542110741/p/9145286.html ,项目要求为爬取今日头条搜索关键词为“小姐姐”的图片。 首先先分析下网页。 1.分析网页分页规则 下滑页面几次后会发现该页面是会随着你鼠标...
  • 到目前为止,能使用python写一点简单的程序了,本次的任务是爬取今日头条的文章信息。大致涉及的知识点:json数据格式,浏览器插件jsonView,浏览器开发者模式,html基础,http代理,http协议首先我们需要模拟浏览器...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 856
精华内容 342
关键字:

爬取今日头条