本人是菜鸟一枚,学了python爬虫有一段时间了,想找个网站练练手,网上搜索今日头条是动态加载的页面,用requests库,需要破as:A175DBDFDEC7024
cp: 5BFE87208254DE1,_signature: 4P9lsBAcuwy3yC3rgtk6COD.Za,这些参数都是加密处理的,破解有一定的难度,但是有selenium驱动chrom浏览器就比较好爬取了。

一,准备
1,需要安装好python3,并配置好开发坏境,可以去官网下载安装,官网:https://www.python.org/downloads/
2。下载好chrom浏览器,并下载好对应的驱动,我用的pycharm开发工具,可以自行选择。chrom驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
3,mongodb下载官网:https://www.mongodb.com/download-center
安装过程这里就不在赘述了,百度搜索就可以的。
二,实现过程
1,打开ychrom新建一个python文件,导入需要的库

from selenium import webdriver #导入web驱动库
import time #导入时间库
import pymongo#monggo #导入数据库

2,因为获取的数据需要保存到mongodb数据库中,所以可以先连接数据库

 链接数据库
client = pymongo.MongoClient() #链接数据库
db =client['db'] #设置数据库名
toutiao =db['toutiao'] #设置集合名

3,

#启动webdrive
base_url ='https://www.toutiao.com'
brower =webdriver.Chrome()
brower.get(base_url)
brower.implicitly_wait(10)
brower.maximize_window() # 最大化窗口
brower.implicitly_wait(10)
brower.find_element_by_link_text('热点').click()
brower.implicitly_wait(10)

4,用selenium自带的find_elements_by_xpath()方法获取页面需要的元素,这里我们获取新闻的标题title,详情页面的链接url,发布者source,评论总数comment

def get_info():titles= brower.find_elements_by_xpath('//div[@class="title-box"]/a')for title in titles:title_list.append(title.text)urls = brower.find_elements_by_xpath('//div[@class="title-box"]/a')for url in urls:url = url.get_attribute('href')url_list.append(url)sources = brower.find_elements_by_xpath('//a[@class="lbtn source"]')for source in sources:sources_list.append(source.text)comments =brower.find_elements_by_xpath('//a[@class="lbtn comment"]')for comment in comments:comments_list.append(comment.text)

5,因为今日头条是用ajax动态加载的,浏览器向下拉的过程中,页面会一直在下面加载出来,可以通过execute_script(“window.scrollTo();”)功能模拟浏览器下拉页面刷新数据

def get_manyinfo():brower.execute_script("window.scrollTo(0,1000);")time.sleep(1)while len(title_list) < 100:for i in range(30):brower.execute_script("window.scrollTo(0,document.body.scrollHeight);")time.sleep(3)get_info()brower.refresh()else:brower.close()

6,设计保存到数据库中,用zip()函数匹配title,url,source, comment,保存为字典格式,然后将字典保存到数据库中

def save_info():infos = zip(title_list, url_list, sources_list, comments_list)for info in infos:data={'标题': info[0],'url': info[1],'来源': info[2],'评论': info[3]}#result =db['toutiao'].insert_one(data)print(data)print('数据写入成功')

三,完整代码

from selenium import webdriver
import time
import pymongo# 链接数据库
client = pymongo.MongoClient() #链接数据库
db =client['db'] #设置数据库名
toutiao =db['toutiao'] #设置集合名#启动webdrive
base_url ='https://www.toutiao.com'
brower =webdriver.Chrome()
brower.get(base_url)
brower.implicitly_wait(10)
brower.maximize_window() # 最大化窗口
brower.implicitly_wait(10)
brower.find_element_by_link_text('热点').click()
brower.implicitly_wait(10)title_list,url_list,sources_list,comments_list=[],[],[],[]
# 获取页面新闻标题,详情页面链接,来源,评论,并添加到列表中
def get_info():titles= brower.find_elements_by_xpath('//div[@class="title-box"]/a')for title in titles:title_list.append(title.text)urls = brower.find_elements_by_xpath('//div[@class="title-box"]/a')for url in urls:url = url.get_attribute('href')url_list.append(url)sources = brower.find_elements_by_xpath('//a[@class="lbtn source"]')for source in sources:sources_list.append(source.text)comments =brower.find_elements_by_xpath('//a[@class="lbtn comment"]')for comment in comments:comments_list.append(comment.text)# 通过下拉进度条一直加载页面
def get_manyinfo():brower.execute_script("window.scrollTo(0,1000);")time.sleep(1)while len(title_list) < 100:for i in range(30):brower.execute_script("window.scrollTo(0,document.body.scrollHeight);")time.sleep(3)get_info()brower.refresh()else:brower.close()# 保存获取的信息保存到monggodb中
def save_info():infos = zip(title_list, url_list, sources_list, comments_list)for info in infos:data={'标题': info[0],'url': info[1],'来源': info[2],'评论': info[3]}result =db['toutiao'].insert_one(data)print(data)print('数据写入成功')def main():get_manyinfo()save_info()if __name__=="__main__":main()

四,最后的效果,由于是新手,代码都是自己写的,可以参考一下,代码和功能肯定不是很完善,希望大佬多多指正啊。

python3爬虫selenium+chrom爬取今日头条热点新闻保存到数据库相关推荐

  1. python爬虫今日头条_python 简单爬取今日头条热点新闻(

    今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的: 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模式netwo ...

  2. python爬虫爬取今日头条_python 简单爬取今日头条热点新闻(一)

    今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的: 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模式netwo ...

  3. python爬虫今日头条_python 简单爬取今日头条热点新闻(一)

    今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的: 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模式netwo ...

  4. python编程100例头条-python 简单爬取今日头条热点新闻(一)

    今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的: 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模式netwo ...

  5. python 头条 上传_python 简单爬取今日头条热点新闻(一)

    今日头条如今在自媒体领域算是比较强大的存在,今天就带大家利用python爬去今日头条的热点新闻,理论上是可以做到无限爬取的: 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模式netwo ...

  6. python 爬取今日头条热点新闻

    嗯,今天就让我们来一起爬爬今日头条的热点新闻吧! 今日头条地址:https://www.toutiao.com/ch/news_hot/ 在浏览器中打开今日头条的链接,选中左侧的热点,在浏览器开发者模 ...

  7. Python爬虫从入门到精通——爬虫实战:爬取今日头条图片新闻

    分类目录:<Python爬虫从入门到精通>总目录 本文为实战篇,需提前学习Python爬虫从入门到精通中<基本库requests的使用>和<Ajax数据爬取(一):基本原 ...

  8. python爬取今日头条热点新闻事件,Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

    之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能找到看到的数据和内容,然而并不是所有的网页都是这样的. 有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成 ...

  9. 动态渲染页面的爬取(项目案例:爬取今日头条热点新闻)

    声明:本文内容来自 张涛的<从零开始学Scrapy网络爬虫> 在使用Selenium的过程中,我们驱动的都是Chrome.FireFox等有界面的浏览器,效率极低.对爬虫来说,只要能高效地 ...

最新文章

  1. 王道考研 计算机网络笔记 第一章:概述计算机网络体系结构
  2. a标签怎么传参_jsp页面中怎么利用a标签的href进行传递参数以及需要注意的地方...
  3. HTML5 CSS3专题 诱人的实例 CSS3打造百度贴吧的3D翻牌效果
  4. 学习笔记98—从矩阵坐标转换至MNI坐标
  5. [Java,MVC] Eclipse下搭建Spring MVC
  6. jenkins -ant-svn 自动化持续部署——web应用war包 ant build.xml配置
  7. 埃里克贝里奇_9大热门技术的安全隐患
  8. 多线程异常处理【转】
  9. 二十款免费WiFi渗透工具
  10. python世界你好的输出_Python语句print( ;世界,你好”)的输出是________。
  11. 家用智能投影仪首选,走进极米H3S投影
  12. 文氏图解析SQL语句中JOIN操作
  13. win10 高分屏显示模糊的解决办法
  14. ios苹果签名多少钱?苹果企业签名是最便宜的吗
  15. 王者荣耀战区修改,安卓手机免ROOT教程王者荣耀战力查询
  16. 从TikTok功能优化,抓住直播带货机遇
  17. [BZOJ1587]叶子合并leaves
  18. linux进程管理原理
  19. 汉诺塔(河内塔)问题
  20. 本地idea 调试Hadoop的mr任务(Windows环境)以及对应安装包的下载

热门文章

  1. 潭州课堂25班:Ph201805201 周五 (课堂笔记)
  2. 将16进制的颜色转为rgb颜色
  3. android模拟器socket服务端,android 模拟器跟电脑服务器端用socket通讯
  4. 共享打印机怎么使用HttpPrinter进行网页打印_gwj_20230218_120829
  5. 微信登陆报redirect_uri 参数错误
  6. float转int型
  7. 基于RDA5820,51单片机制作的收发一体收音机,附完整c程序
  8. 长期稳定短视频去水印微信小程序源码下载自带稳定接口支持图集解析去水印
  9. java 字节流和字符流
  10. 3、字节流与字符流的区别