头榜,一个集合主播信息及资讯的网站,内容比较齐全,现今直播火热,想要找寻各种播主信息,这类网站可以搜集到相关热门主播信息。

目标网址:

http://www.toubang.tv/baike/list/20.html

列表页,而且暂时没有发现列表页规律,加密了?

http://www.toubang.tv/baike/list/20.html?p=hJvm3qMpTkj7J/RNmtAVNw==

http://www.toubang.tv/baike/list/20.html?p=rjaUfcMsOOYXKBBBp5YUUA==

很明显,p后面所带的参数就是页码,但是搞不明白是如何实现的一串字符串,目测没有明显的页码规律。

没有过多的研究,霸王硬上弓,硬搞吧!

直接把所有列表页上遍历一遍,获取到页码链接,这里我简单的使用了递归函数        

获得所有列表页的集合,至于去重,这里直接使用了set(),直接将集合转化为set

递归代码

def get_apgeurls(apgeurls):page_urls=[]for apgeurl in apgeurls:page_url=get_pageurl(apgeurl)page_urls.extend(page_url)page_urls=set(page_urls)#print(len(page_urls))if len(page_urls) < 66:return get_apgeurls(page_urls) #链轮else:return page_url

好在分页数不多,算是一个比较笨的实现方法,注意return的使用,递归函数调用函数本身,return会返回None,这里通过百度查询相关资料获取到解决方案。

其他的一些获取内容,都是正常操作,这里就不再阐述了!

提一下多线程吧!

def get_urllists(urls):threads = []for url in urls:t=threading.Thread(target=get_urllist,args=(url,))threads.append(t)for i in threads:i.start()for i in threads:i.join()print('>>> 获取采集链接完毕!')

这里需要注意一个参数的调用的时候,args=(url,),同时多线程的使用,采集报错是一个很头疼的问题,基本都是服务器反应不过来,难道还是得采用Scrapy框架,大范围抓取。

运行效果:

采集效果:

附源码参考:

#www.toubang.tv/
#20200606 by WX:huguo00289# -*- coding: utf-8 -*-
from fake_useragent import UserAgent
import requests,time,os
from lxml import etree
import threading  #多线程def ua():ua=UserAgent()headers={'User-Agent':ua.random}return headersdef get_pageurl(url):pageurl=[]html=requests.get(url,headers=ua()).content.decode('utf-8')time.sleep(1)req=etree.HTML(html)pagelists=req.xpath('//div[@class="row-page tc"]/a/@href')for pagelist in pagelists:if "baike" in pagelist:pagelist=f"http://www.toubang.tv{pagelist}"pageurl.append(pagelist)#print(len(pageurl))return pageurldef get_apgeurls(apgeurls):page_urls=[]for apgeurl in apgeurls:page_url=get_pageurl(apgeurl)page_urls.extend(page_url)page_urls=set(page_urls)#print(len(page_urls))if len(page_urls) < 5:#if len(page_urls) < 65:return get_apgeurls(page_urls) #链轮else:return page_urlsdef get_urllist(url):html = requests.get(url, headers=ua()).content.decode('utf-8')time.sleep(1)req = etree.HTML(html)hrefs=req.xpath('//div[@class="h5 ellipsis"]/a/@href')print(hrefs)for href in hrefs:href=f'http://www.toubang.tv{href}'get_info(href)def get_urllists(urls):threads = []for url in urls:t=threading.Thread(target=get_urllist,args=(url,))threads.append(t)for i in threads:i.start()for i in threads:i.join()print('>>> 获取采集链接完毕!')def get_info(url):html = requests.get(url, headers=ua()).content.decode('utf-8')time.sleep(1)req = etree.HTML(html)name=req.xpath('//div[@class="h3 ellipsis"]/span[@class="title"]/text()')[0]os.makedirs(f'{name}/', exist_ok=True)  # 创建目录briefs=req.xpath('//dl[@class="game-tag clearfix"]/dd/span//text()')brief_img=req.xpath('//div[@class="i-img fl mr20"]/img/@src')[0].split('=')[1]print(name)print(briefs)print(brief_img)down_img(brief_img, name)informations=req.xpath('//table[@class="table-fixed table-hover hot-search-play"]/tbody/tr[@class="baike-bar"]/td//text()')for information in informations:if '\r' and '\n' and '\t' not in information:print(information)text=req.xpath('//div[@class="text-d"]/p//text()')print(text)text_imgs=req.xpath('//div[@id="wrapBox1"]/ul[@id="count1"]/li/a[@class="img_wrap"]/@href')print(text_imgs)threads=[]for text_img in text_imgs:t=threading.Thread(target=down_img,args=(text_img,name))threads.append(t)for i in threads:i.start()for i in threads:i.join()print("图片下载完成!")def down_img(img_url,name):img_name=img_url.split('/')[-1]r=requests.get(img_url,headers=ua(),timeout=8)time.sleep(2)with open(f'{name}/{img_name}','wb') as f:f.write(r.content)print(f'>>>保存{img_name}图片成功!')def main():url = "http://www.toubang.tv/baike/list/20.html?p=hJvm3qMpTkjm8Rev+NDBTw=="apgeurls = [url]page_urls = get_apgeurls(apgeurls)print(page_urls)get_urllists(page_urls)if __name__=='__main__':main()

扫码关注

微信公众号:二爷记

欢迎交流Python

Python多线程爬虫,主播信息资料爬取采集相关推荐

  1. 爬取虎牙之一:(王者荣耀主播信息普通爬取)

    使用工具 jsoup 对于新手而言,jsoup无疑是最简单的抓取工具之一,强大的解析能力让人方便使用,对于我们新手而言,获取只是看过爬虫书或者资料用简单的例子爬取所有链接,想要爬取想要的内容,首先要熟 ...

  2. Python新手爬虫训练小项目《爬取彼岸图网》(超详细讲解版)

    Python新手爬虫训练小项目<爬取彼岸图网>(超详细讲解版) 这是我的第一篇文章,作为一名新手爬虫,这个算是我这几天来的努力成果,虽然代码寥寥几行但花费了大半天,新手上路还是不能只看视频 ...

  3. 大数据信息资料采集:中国知网文献资料网站数据信息资料爬取

    大数据信息资料采集:中国知网文献资料网站数据信息资料爬取 数据采集满足多种业务场景:适合产品.运营.销售.数据分析.政府机关.电商从业者.学术研究等多种身份职业. 舆情监控:全方位监测公开信息,抢先获 ...

  4. 【爬虫】【python】微信公众号信息的爬取(以南中医青年为例)

    微信公众号信息的爬取 1.Selenium库来获取源码 打开搜狗微信,在搜索框中输入"南中医青年",这里就搜索到了南中医青年发布的公众号文章结果 但是在浏览器中复制浏览器地址后再度 ...

  5. Python网络爬虫(九):爬取顶点小说网站全部小说,并存入MongoDB

    前言:本篇博客将爬取顶点小说网站全部小说.涉及到的问题有:Scrapy架构.断点续传问题.Mongodb数据库相关操作. 背景: Python版本:Anaconda3 运行平台:Windows IDE ...

  6. python如何爬虫网页数据-如何轻松爬取网页数据?

    一.引言 在实际工作中,难免会遇到从网页爬取数据信息的需求,如:从微软官网上爬取最新发布的系统版本.很明显这是个网页爬虫的工作,所谓网页爬虫,就是需要模拟浏览器,向网络服务器发送请求以便将网络资源从网 ...

  7. 最没灵魂的爬虫——Selenium 游戏信息的爬取与分析

    最没有灵魂的爬虫--Selenium 游戏信息爬取与分析 准备工作 IDE选取 selenium安装 ChromeDriver安装与配置 还需要用到的其他python库 数据爬取 杉果游戏的数据获取 ...

  8. Python网络爬虫3 - 生产者消费者模型爬取某金融网站数据

    博客首发于www.litreily.top 应一位金融圈的朋友所托,帮忙写个爬虫,帮他爬取中国期货行业协议网站中所有金融机构的从业人员信息.网站数据的获取本身比较简单,但是为了学习一些新的爬虫方法和技 ...

  9. 爬虫python爬取页面请求_03 Python网络爬虫第三弹《爬取get请求的页面数据》,urllib...

    一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib. ...

最新文章

  1. React事件系统整理
  2. ubuntu常用指令
  3. WindowManager.LayoutParams类22
  4. 四、唱歌不如跳舞(上)
  5. 人工智能伦理体系:基础架构与关键问题
  6. git 使用分支基础
  7. php的limit分页,用php数组的array_slice分页和用limit查询分页哪个效率更高?
  8. 关于PCI-E接口你要知道这些点
  9. Abnova循环肿瘤DNA丨全血分离,基因组DNA萃取分析
  10. idea打断点是白色的
  11. Qt高质量的开源项目合集
  12. eureka心跳_8个Eureka优化技巧,让效率提高10倍
  13. C++之重载:函数名的鱼塘
  14. 坚果云和百度云的对比
  15. 计算机专业大创要求,“大创项目”推动计算机专业学生创新实践能力的提高
  16. 爬虫实战——豆瓣电影Top250
  17. uniapp用户设置字体大小
  18. 国威WS824分机交换机
  19. 数据架构师 VS 数据工程师,薪酬平均3万+,区别在哪里
  20. 怎样才能拿到期货开户最低的手续费?

热门文章

  1. asus华硕 开启安全启动
  2. 02 数字图像技术——颜色空间转换与颜色空间分割实验结果与分析——python
  3. 计算机c盘如何腾出空间,WIN8的C盘太大怎么清理腾出空间呢
  4. 思维导图软件 XMind 2022
  5. 如何在U-Boot中添加自定义命令
  6. 攻防世界-- web高手进阶区-- writeup汇总
  7. 包你笑,笑话之三 超强情侣对话
  8. 教学优化算法的简单介绍
  9. 怎么把图片转换成BMP格式
  10. jquery之empty()方法详解