千家信息网

python抖音爬虫采集数据的方法是什么

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要讲解了"python抖音爬虫采集数据的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python抖音爬虫采集数据的方法是什么"吧
千家信息网最后更新 2025年02月04日python抖音爬虫采集数据的方法是什么

这篇文章主要讲解了"python抖音爬虫采集数据的方法是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python抖音爬虫采集数据的方法是什么"吧!

一、爬虫与反爬简介

爬虫就是我们利用某种程序代替人工批量读取、获取网站上的资料信息。而反爬则是跟爬虫的对立面,是竭尽全力阻止非人为的采集网站信息,二者相生相克,水火不容,到目前为止大部分的网站都还是可以轻易的爬取资料信息。
爬虫想要绕过被反的策略就是尽可能的让服务器人你不是机器程序,所以在程序中就要把自己伪装成浏览器访问网站,这可以极大程度降低被反的概率,那如何做到伪装浏览器呢?

1.可以使用请求头(headers)来掩饰自己,其中最常用的就是User Agent(中文名为用户代理),是Http协议中的一部分,属于头域的组成部分,User Agent也简称 UA 。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识;表示当前访问服务器的身份信息,如果同一个身份过于频繁的访问服务器会被识别为机器身份,遭到反爬的打击,所以需要频繁的更改User-Agent信息;一般User-Agent字段包括以下几个信息:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息;
2.使用不同的User-Agent来规避反爬策略

比如:

  • Accept:客户端支持的数据类型,用逗号隔开,是有顺序的,分号前面是主类型,分号后是子类型;

  • Accept-Encoding:指定浏览器可以支持的web服务器返回内容压缩编码类型;

  • Accept-Language:浏览器可接受的自然语言的类型;

  • Connection:设置HTTP连接的持久化,通常都是Keep-Alive;

  • Host:服务器的域名或IP地址,如果不是通用端口,还包含该端口号;

  • Referer:指当前请求的URL是在什么地址引用的;

user_agent_list = [    "Opera/9.80 (X11; Linux i686; U; hu) Presto/2.9.168 Version/11.50",    "Opera/9.80 (X11; Linux i686; U; ru) Presto/2.8.131 Version/11.11",    "Opera/9.80 (X11; Linux i686; U; es-ES) Presto/2.8.131 Version/11.11",    "Mozilla/5.0 (Windows NT 5.1; U; en; rv:1.8.1) Gecko/20061208 Firefox/5.0 Opera 11.11",    "Opera/9.80 (X11; Linux x86_64; U; bg) Presto/2.8.131 Version/11.10",    "Opera/9.80 (Windows NT 6.0; U; en) Presto/2.8.99 Version/11.10",    "Opera/9.80 (Windows NT 5.1; U; zh-tw) Presto/2.8.131 Version/11.10",    "Opera/9.80 (Windows NT 6.1; Opera Tablet/15165; U; en) Presto/2.8.149 Version/11.1",    "Opera/9.80 (X11; Linux x86_64; U; Ubuntu/10.10 (maverick); pl) Presto/2.7.62 Version/11.01",    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36",    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",    "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0",    "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16",    "Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14",    "Mozilla/5.0 (Windows NT 6.0; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 12.14",    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0) Opera 12.14",    "Opera/12.80 (Windows NT 5.1; U; en) Presto/2.10.289 Version/12.02",    "Opera/9.80 (Windows NT 6.1; U; es-ES) Presto/2.9.181 Version/12.00",    "Opera/9.80 (Windows NT 5.1; U; zh-sg) Presto/2.9.181 Version/12.00",    "Opera/12.0(Windows NT 5.2;U;en)Presto/22.9.168 Version/12.00",    "Opera/12.0(Windows NT 5.1;U;en)Presto/22.9.168 Version/12.00",    "Mozilla/5.0 (Windows NT 5.1) Gecko/20100101 Firefox/14.0 Opera/12.0",    "Opera/9.80 (Windows NT 6.1; WOW64; U; pt) Presto/2.10.229 Version/11.62",    "Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.10.229 Version/11.62",    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; de) Presto/2.9.168 Version/11.52",    "Opera/9.80 (Windows NT 5.1; U; en) Presto/2.9.168 Version/11.51",    "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; de) Opera 11.51",    "Opera/9.80 (X11; Linux x86_64; U; fr) Presto/2.9.168 Version/11.50",]referer_list = ["https://www.test.com/", "https://www.baidu.com/"]

获取随机数,即每次采集都会根据随机数提取随机用户代理、引用地址(注:若有多个页面循环采集,最好采集完单个等待个几秒钟再继续采集,减小服务器的压力。):

import randomimport re, urllib.request, lxml.htmlimport requestsimport time, randomdef get_randam(data):    return random.randint(0, len(data)-1)def crawl():    headers = {        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',        'Accept-Encoding': 'gzip, deflate',        'Accept-Language': 'zh-CN,zh;q=0.9',        'Connection': 'keep-alive',        'host': 'test.com',        'Referer': 'https://test.com/',    }    random_index = get_randam(user_agent_list)    random_agent = user_agent_list[random_index]    headers['User-Agent'] = random_agent    random_index_01 = get_randam(referer_list)    random_agent_01 = referer_list[random_index_01]    headers['Referer'] = random_agent_01    session = requests.session()    url = "https://www.test.com/"    html_data = session.get(url, headers=headers, timeout=180)    html_data.raise_for_status()    html_data.encoding = 'utf-8-sig'    data = html_data.text    data_doc = lxml.html.document_fromstring(data)    ...(对网页数据进行解析、提取、存储等)    time.sleep(random.randint(3, 5))
3.使用代理IP来规避反爬:同一个ip大量请求了对方服务器,有更大的可能性会被识别为爬虫,ip就有可能被暂时被封。

根据代理ip的匿名程度,代理ip可以分为下面四类:

  • 透明代理(Transparent Proxy)Transparent Proxy):透明代理虽然可以直接"隐藏"你的IP地址,但是还是可以查到你是谁。

  • 匿名代理(Anonymous Proxy):匿名代理比透明代理进步了一点:别人只能知道你用了代理,无法知道你是谁。

  • 混淆代理(Distorting Proxies):与匿名代理相同,如果使用了混淆代理,别人还是能知道你在用代理,但是会得到一个假的IP地址,伪装的更逼真

  • 高匿代理(Elite proxy或High Anonymity Proxy):可以看出来,高匿代理让别人根本无法发现你是在用代理,所以是最好的选择。
    在使用的使用,毫无疑问使用高匿代理效果最好

下面我采用免费的高匿代理IP进行采集:

#代理IP: https://www.xicidaili.com/nnimport requestsproxies = {"http": "http://117.30.113.248:9999","https": "https://120.83.120.157:9999"}r=requests.get("https://www.baidu.com", proxies=proxies)r.raise_for_status()r.encoding = 'utf-8-sig'print(r.text)

感谢各位的阅读,以上就是"python抖音爬虫采集数据的方法是什么"的内容了,经过本文的学习后,相信大家对python抖音爬虫采集数据的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

代理 爬虫 信息 浏览器 浏览 服务器 服务 数据 类型 地址 标识 网站 方法 就是 内容 最好 版本 程序 身份 还是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 gome服务器异常怎么办 泉州网络安全好就业吗 服务器主板哪个型号比较好 第6次人口普查数据库 ar全民寻宝软件开发 贵阳学院教务管理服务器 浙江信子互联网络科技有限公司 镇网络安全责任制报告 计算机服务器是后端吗 数据库技术及应用教材李雁翎 石景山区专业性软件开发范围 咸阳网络技术哪家强 北京欧维时代网络技术 杜磊 剑三找不到服务器 西安软件开发驻场服务方案 软件开发中的各个职务 蔚来软件开发商 厦门四方块软件开发工作室 ctf网络安全大赛的人 南京优信网络安全技术研究院 医院里的网络安全吗 产品外观样机制作软件开发 网络安全知识包括哪几方面 在罗斯文数据库中有多少个报表 福建加工软件开发发展现状 学计算机网络技术需要笔记本吗 数据库系统在计算机中的位置 数据库管理属于数据仓库吗 江苏服务器维修调试 文山服务器上门回收报价
0