1-利用requests库以及xpath 获取百度热搜风云榜的字段 如:标题title 热搜url

url = 'http://top.baidu.com/buzz?b=1&fr=topindex'
header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36','Referer': 'http://top.baidu.com/'
}
r = requests.get(url,headers=header)
r.encoding='gbk'
#print(r.text)
selector = etree.HTML(r.text)# 二次检索
eles = selector.xpath('//td[@class="keyword"]/a[1]')
#print(len(eles))

2-通过二次检索的方式 把我们需要的字段值 一一获取

ls =[]
for ele in eles:#print(index+1)# 百度热搜主题title = ele.xpath('./text()')[0]#print(title)# 百度热搜主题链接url = ele.xpath('./@href')[0]#print(url)crawled_time = datetime.now()temp_ls = {}temp_ls['title'] =titletemp_ls['url'] = urltemp_ls['crawled_time'] = str(crawled_time)ls.append(temp_ls)#print(ls)data_email =''
for index , email_ls in enumerate(ls):# 发送到邮箱显示的热搜主题内容# 将title字符串 强转为其他类型title = email_ls['title']url = email_ls['url']crawled_time = email_ls['crawled_time']html = '<p>%d:<a href="%s">热搜标题title:%s  </a>爬取时间:%s</p>'%((index+1),url,title,crawled_time)#print(html)data_email+=html
#print(len(data_email))
print('邮件发送的总字符数目:',len(data_email))

3-邮箱邮件的设置

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from data import from_addr,to_addr ,qqCode # 这里是我自己新建的py文件 存放邮件发送人 收件人的账号
# SMTP邮件的发送From_addr = from_addr  # 发送邮件人的账号
To_addr = to_addr  #收件人的账号
#这里是SMTP邮件 接受的授权码  QQ安全等级过高  需要去开启SMTP授权
QQCode = qqCode
# smtp发送器  qq邮箱设置为这种形式  126.com设置为smtp.126.com
smtp_server = 'smtp.qq.com'
# qq接收端口 默认465 126.com默认端口25
smtp_port = 465# 配置服务器
stmp = smtplib.SMTP_SSL(smtp_server,smtp_port)
# 邮箱设置登录
stmp.login(From_addr,QQCode)

4-将邮件以html文本的形式发送至个人邮箱

# 组装邮件内容的发送
# 邮件发送内容 发送文件形式 编码格式
message =MIMEText(data_email,'html','utf-8')  #  发送的内容
message['FROM']=Header('PYTHON邮件','utf-8') # 发件人
message['TO'] = Header('管理员','utf-8')  # 收件人
Subject = '百度热搜风云榜'
message['subject'] =Header(Subject,'utf-8') # 邮件标题
try:stmp.sendmail(From_addr,To_addr,message.as_string())print('邮件发送成功')
except Exception as e:print('邮件发送失败!'+str(e))

5-完整代码的实现

import requests
from lxml import etree
import cssselect
from datetime import datetimeurl = 'http://top.baidu.com/buzz?b=1&fr=topindex'
header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36','Referer': 'http://top.baidu.com/'
}r = requests.get(url,headers=header)
r.encoding='gbk'
#print(r.text)
selector = etree.HTML(r.text)# 二次检索
eles = selector.xpath('//td[@class="keyword"]/a[1]')
#print(len(eles))ls =[]
for ele in eles:#print(index+1)# 百度热搜主题title = ele.xpath('./text()')[0]#print(title)# 百度热搜主题链接url = ele.xpath('./@href')[0]#print(url)crawled_time = datetime.now()temp_ls = {}temp_ls['title'] =titletemp_ls['url'] = urltemp_ls['crawled_time'] = str(crawled_time)ls.append(temp_ls)#print(ls)data_email =''
for index , email_ls in enumerate(ls):# 发送到邮箱显示的热搜主题内容# 将title字符串 强转为其他类型title = email_ls['title']url = email_ls['url']crawled_time = email_ls['crawled_time']html = '<p>%d:<a href="%s">热搜标题title:%s  </a>爬取时间:%s</p>'%((index+1),url,title,crawled_time)#print(html)data_email+=html
#print(len(data_email))
print('邮件发送的总字符数目:',len(data_email))# 发送邮件 给本地邮箱  这里采取发送邮件给QQ邮箱  即xxxxxx@qq.com
# 发生给本地邮箱的方式可以以文本形式发送 但不简洁  另一种以html形式 干净简洁  这里采用html形式发送import smtplib
from email.mime.text import MIMEText
from email.header import Header
from data import from_addr,to_addr ,qqCode # 这里是我自己新建的py文件 存放邮件发送人 收件人的账号
# SMTP邮件的发送From_addr = from_addr  # 发送邮件人的账号
To_addr = to_addr  #收件人的账号
#这里是SMTP邮件 接受的授权码  QQ安全等级过高  需要去开启SMTP授权
QQCode = qqCode
# smtp发送器  qq邮箱设置为这种形式  126.com设置为smtp.126.com
smtp_server = 'smtp.qq.com'
# qq接收端口 默认465 126.com默认端口25
smtp_port = 465# 配置服务器
stmp = smtplib.SMTP_SSL(smtp_server,smtp_port)
# 邮箱设置登录
stmp.login(From_addr,QQCode)# 组装邮件内容的发送
# 邮件发送内容 发送文件形式 编码格式
message =MIMEText(data_email,'html','utf-8')  #  发送的内容
message['FROM']=Header('PYTHON邮件','utf-8') # 发件人
message['TO'] = Header('管理员','utf-8')  # 收件人
Subject = '百度热搜风云榜'
message['subject'] =Header(Subject,'utf-8') # 邮件标题
try:stmp.sendmail(From_addr,To_addr,message.as_string())print('邮件发送成功')
except Exception as e:print('邮件发送失败!'+str(e))

6-实现的代码截图

爬虫实例1:爬取百度热搜风云榜 前50条热搜 并将热搜发送至自己邮箱相关推荐

  1. python爬虫No.1|爬取网易云音乐歌手的前50首歌曲ID及名字

    自学pythonのNo.5 引语 知识总结 Requests XPath 案例 曾经有这样的梗黑网易云音乐 实际上网易云是很不错的音乐软件之一.这个梗挺让我不舒服的,挫折谁都有,矫情没必要但对矫情之人 ...

  2. Python爬虫实战之爬取百度贴吧帖子

    Python爬虫实战之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的 ...

  3. 2021-02-27爬虫实例(爬取照片)以虎牙为例

    爬虫实例(爬取照片)以虎牙为例 开始之前点赞,投币加关注哦 开发环境:Python3.7 开发软件:PyCharm Edu 第一步:导入第三方库(模块) # 导入第三方库 import request ...

  4. 写一个爬虫,可以爬取百度文库内容

    爬取百度文库内容需要使用爬虫技术.以下是一个简单的 Python 爬虫示例: import requestsurl ="https://wenku.baidu.com/view/your_d ...

  5. 百度贴吧界面html程序代码,python爬虫例题:爬取百度贴吧评论区图片和视频

    百度贴吧是全球最大的中文交流平台,你是否跟我一样,有时候看到评论区的图片想下载呢?或者看到一段视频想进行下载呢? 今天,本期Python教程带大家通过搜索关键字来获取评论区的图片和视频. [二.项目目 ...

  6. python爬虫爬取百度图片总结_python爬虫如何批量爬取百度图片

    当我们想要获取百度图片的时候,面对一张张图片,一次次的点击右键下载十分麻烦.python爬虫可以实现批量下载,根据我们下载网站位置.图片位置.图片下载数量.图片下载位置等需求进行批量下载,本文演示py ...

  7. Python爬虫实战之爬取百度音乐歌曲

    Python爬虫爬取百度音乐歌曲 整体思路如下: 1.搜索:通过搜索界面输入歌手名字找到歌手的歌曲信息.千千音乐:网址 2.找到歌曲信息:通过遍历歌曲列表信息界面获取每个歌曲的ID,以及歌曲的总数 3 ...

  8. Python爬虫实例: 爬取“最好大学网”大学排名

    实例2 爬取大学排名 上海交通大学设计了一个"最好大学网",上面列出了当前的大学排名.我们要设计爬虫程序,爬取大学排名信息. 爬虫功能要求: 输入:大学排名URL链接 输出:大学排 ...

  9. 请用Python写一个爬虫程序,爬取当当网图书畅销榜数据

    好的,下面是一个简单的 Python 爬虫代码,可以爬取当当网图书畅销榜数据: import requests from bs4 import BeautifulSoupurl = "htt ...

最新文章

  1. linux 系统 UDP 丢包问题分析思路
  2. 【编译原理】第二章课后习题(王生原版)
  3. Maven知识- repositories
  4. python在字符串结尾加反斜杠_Python原始字符串和尾部反斜杠
  5. Android图形之HWC(二十四)
  6. 每日算法系列【LeetCode 1031】两个非重叠子数组的最大和
  7. 每日一九度之 题目1091:棋盘游戏
  8. OPTEE CA和TA通信 实现从java到ca
  9. android 如何进入安全模式,手机怎么进入安全模式
  10. vsftpd虚拟账户(虚拟用户,ubuntu16,舍弃虚拟用户配置文件)
  11. Python获取指定月份的所有天数
  12. 民远学院99届计算机,上海民远职业技术学院计算机基础复习题及参考答案-D套...
  13. QQ邮箱测试域用户密码过期邮件提示
  14. Unity灯光(light)
  15. getopt()函数简介
  16. 【复杂网络】网络级联模型
  17. 【Pytorch with fastai】第 14 章 :ResNet
  18. IDEA快捷键大全(详细)
  19. 分支定界算法理解(摘抄)
  20. [Unity][NGUI]悬浮点击空白区域隐藏UI

热门文章

  1. 如何在ThinkPadE580上安装Ubuntu双系统
  2. QStyle类用法总结(二)
  3. 计算机联网显示651,651错误代码,教您宽带连接提示错误651怎么办
  4. 两台家庭无线路由器中继模式组建
  5. 基于SSM(Spring+SpringMVC+MyBatis)+ VUE框架前后端分离的汽车预约保养
  6. 使用python选择结构和循环实现英雄联盟登录和注册
  7. 续航长到不可思议!乐檬K12 Pro体验:999元真香
  8. 【教师节福利】监测净化好拍档,499元买台环境猫!
  9. PCB设计软件之三:AD 23.0.1版本安装使用
  10. 我的工程师爸爸 - 音频应用DIY系列之六:录音棚