在淘股吧发现有位大牛每天都有数据整理,地址:湖南人的博客

所以直接下载他的博客文章即可。

分析发现,他复盘的数据都是使用的图片,所以只需要把博客文章里面的图片下载到本地。

第一步:分析首页数据:

通过blogs = self.browser.find_elements_by_css_selector(".article_tittle"),可以得到首页的文章列表,点击超链接跳转到内容页。

第二步,分析内容页数据:

找到上图DIV中的所有图片,然后下载即可。


实现代码如下:

一、打开首页,遍历文章列表

二、根据文章列表打开文章详情页

三、找到详情页中的内容区域,并下载图片

from selenium import webdriver
from bs4 import BeautifulSoup
import common.mysql_oper as mysql
import os
import time
import urllib
import random
import requestsclass TaoGuBa():heads = {'User-Agent': "Mozilla/5.0 (Linux; U; Android 2.3.6; en-us; Nexus S Build/GRK39F) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"}taoguba_path = "agudata\\taoguba\\"      # 保存数据的目录# 创建浏览器对象,使用chrome浏览器的headless模式(无窗体模式)chrome_options = webdriver.chrome.options.Options()chrome_options.add_argument("--headless")browser = webdriver.Chrome(chrome_options=chrome_options)# browser  = webdriver.Chrome()################################################## 创建目录和复盘数据文件def create_path(self):# 如果目录不存在,则创建目录if ( not os.path.exists(self.taoguba_path)):os.mkdir(self.taoguba_path)################################################## 得到5个可用代理IPdef get_iplist(self):iplist = []# 每次验证1条记录result = mysql.select("select ipurl from iptbl where state=1")for row in result:proxy = row[0]# 验证代理IP是否可用,如果IP不可用会抛异常try:proxies = {"http": proxy}urlList = ["http://www.qq.com", "http://www.jd.com", "http://www.baidu.com", "http://www.csdn.net","http://www.qidian.com", "http://www.51cto.com"]tmpUrl = random.choice(urlList)rsp = requests.get(tmpUrl, headers=self.heads, proxies=proxies, timeout=3)# 如果不可用则删除if (rsp.status_code != 200):sql = "delete from iptbl where ipurl='" + proxy + "'"mysql.exec(sql)print("删除了" + proxy)else:iplist.append(proxy)if(len(iplist)==5):return iplistexcept Exception as e:sql = "delete from iptbl where ipurl='" + proxy + "'"mysql.exec(sql)print("删除了" + proxy)passreturn iplist################################################## ————遍历博客文章详情页————def read_blogs(self, bloglist):iplist = self.get_iplist()i = 0for blog in bloglist:proxies = {"http": iplist[i]}i = (i+1 if i+1<len(iplist) else 0)response = requests.get(blog, headers=self.heads, proxies=proxies)soup = BeautifulSoup(response.content.decode("utf-8"), "lxml")title = soup.title.string# 如果目录不存在,则创建目录filepath = self.taoguba_path + title.split("_")[0] + "\\"if (not os.path.exists(filepath)):os.mkdir(filepath)self.save_imgs(filepath, soup)time.sleep(1)else:print("更新文章已下载完毕!")break# ————保存指内容(首贴中的所有图片)————def save_imgs(self, filepath, soup):# 保存博客所有图片print(filepath + "==>下载中...")imglist = soup.find("div", attrs={"id": "first"}).find_all("img")i = 1for img in imglist[1:]:src = img.get("data-original")save_src = filepath + str(i) + ".png"urllib.request.urlretrieve(src, save_src)i += 1print("下载完成")################################################################################################### 打开首页,遍历文章列表def start(self):self.create_path()self.browser.get("https://www.taoguba.com.cn/blog/444409")  # 打开“湖南人”的博客self.browser.refresh()          #刷新一次,消除全屏广告# 遍历首页文章bloglist = []blogs = self.browser.find_elements_by_css_selector(".article_tittle")for blog in blogs:a = blog.find_element_by_tag_name("a")filepath = self.taoguba_path + a.text + "\\"bloglist.append(a.get_attribute("href"))self.read_blogs(bloglist)self.browser.quit()#################################################if __name__ == "__main__":tgb = TaoGuBa()tgb.start()

老鱼Python数据分析——篇十二:使用selenium+BeautifulSoup获取淘股吧数据相关推荐

  1. 老鱼Python数据分析——篇十:使用selenium获取历史数据并保存

    具体实现步骤如下: 一.打开打开盯盘页面,分析日期控件. 二.点击该区域,出现年-月-日界面. 三.点击"1"号,判断日期是否已改变,改变后下载数据. 四.重复步骤一.二.三,一直 ...

  2. 老鱼Python数据分析——篇十八:消息推送(二)

    任务三:使用微信机器人和极光API推送消息 一.微信机器人推送消息 使用微信机器人的本质其实就是使用Web端微信,所以有不少的限制,比如 近几个月申请的新微信号是不能登录的 (亲测证实),要注意. 在 ...

  3. 老鱼Python数据分析——篇十八:消息推送(一)

    需求分析 这两天想把分析处理之后的数据,做一个定时发送,按照自己设想和百度搜索,发现有以下几种办法.(只是我发现比较大众化的办法,不代表只有这几种方法) 发送邮件 QQ机器人 微信机器人 极光API ...

  4. 老鱼Python数据分析——篇十四:读取“选股宝”的热点板块信息并存为excel文件

    热点板块页面:https://xuangubao.cn/dingpan/redian 一.首先分析板块名对应的标签 二.根据板块名在excel文件中创建对应的sheet,excel的操作这儿就不细说了 ...

  5. 老鱼Python数据分析——篇十五:“选股宝”使用API下载JSON格式数据

    从页面读取数据每次都需要定位HTML标签,那么有没有更简洁的办法呢? 当然有,那就是找到页面数据的来源,分析哪些数据是我们想要的,直接通过WebAPI来获得数据. 我使用的是360极速浏览器,按F12 ...

  6. 老鱼Python数据分析——篇六:使用selenium获取动态数据

    现在很多页面上的数据都是动态加载,所以使用scrapy来爬取页面,只能得到页面HTML的布局代码,而不能获得数据. 而且对于新手,上路就使用scrapy爬动态数据比较困难,所以使用selenium来打 ...

  7. 老鱼Python数据分析——篇二:系统设计(找代理IP)

    开发环境:win7 x64版本,python 3.6,Anaconda3 (64-bit) 因为频繁访问容易被封IP,所以我们需要使用代理来进行数据的爬取(当然你也可以放慢节奏,比如每5秒爬一条记录) ...

  8. 老鱼Python数据分析——篇十三:“选股宝”数据下载代码优化

    今天在测试下载本月(5月)数据时发现,只有6号.7号.9号和15号有数据,其他日期的数据都是完全相同的. 如何解决这个问题? 通过观察发现,没有数据或数据读取很慢时,页面上会出现这样的进度条: 所以修 ...

  9. 老鱼Python数据分析——篇七:将爬取的数据保存到CSV文件

    使用Python操作CSV文件非常方便,三行代码搞定. 一.向文件中追加数据 import csv# 将数据写入文件 with open("d:\\data.csv", " ...

最新文章

  1. 一行代码实现Okhttp,Retrofit,Glide下载上传进度监听
  2. SpringSide 3 中的 Struts 2
  3. 科大星云诗社动态20210315
  4. python3猜数字小游戏代码示例
  5. Codeforces 550D. Regular Bridge 构造
  6. 【sklearn学习】模型网格化调参
  7. 前端学习(712):数组的概念
  8. java空心正方形代码_从Java中的用户输入绘制空心星号正方形/矩...
  9. stm32 Flash读写[库函数]
  10. ubuntu 开发环境的配置 (转)
  11. C语言编程必背单词百度云,c语言编程必背单词-20210403022023.pdf-原创力文档
  12. Alex Smith: An NFL quarterback on overcoming setbacks and self-doubt
  13. 固态硬盘进阶知识:颗粒篇
  14. 微信app支付 服务器接口,iOS微信支付——APP调用微信支付接口
  15. FOFA常用搜索语法
  16. windows 10远程桌面连接报错解决办法
  17. Word中如何制作红头文件?学会技巧提高工作效率
  18. 我的python世界 豆瓣_python系列之(4)豆瓣图书《平凡的世界》书评及情感分析...
  19. Python Network(一)基础入门(节点和边基本概念,网络统计量)
  20. 电子合同是什么意思,电子合同怎么签才有效?

热门文章

  1. C#发送会议(约会)邀请
  2. hive 上卷下钻聚合函数使用
  3. 史上最强--机器学习入门
  4. Cocos2d-x 基础示例-精灵移动2
  5. 软体机器人结构设计与仿真分析专题
  6. 在java中以下 愿意5米的内容_请按时完成并提交作业
  7. 神经网络与深度学习 作业7:第五章课后题(1×1 卷积核 | CNN BP)
  8. 2021/3/14--前端第7天盒模型
  9. 超级计算机加速卡,NVIDIA PCI-E版Tesla P100加速卡性能怎么样?PCI-E版与NVLink版规格对比...
  10. Simens NX (原UG)内部代码逆向分析 / Inner code Reverse analysis of NX software