爬取热搜排行榜数据(以微博为例)再保存数据库用的是selenium

爬取热搜排行榜数据(以微博为例)再保存数据库

  • [1] 下载好所需要的第三方库
  • [2] 先确定要爬取的url
  • [3] 开始我们的请求数据
  • [4] 确保数据库的正常连接输送
  • [5] 保存进自己的数据库
    好了,大概就是以上五点。

第一点:第三方库的安装,

需要准备`
import requests

from selenium.webdriver import Chrome,ChromeOptions

import time
import pymysql
import traceback`
就上面的五个包就足够了。
可以看我的上一篇博客,有安装教程,这里我就不详细谢啦,附一下上篇连接https://blog.csdn.net/XY52wiue/article/details/112975003
下面开始我们的实际操作。

第二步,确定要爬取的url

url = https://s.weibo.com/top/summary

打开技术这个样子,当然你也可以换网站,其实都一样的啦。爬取热搜排行榜数据(以微博为例)再保存数据库用的是selenium_第1张图片

第三步,发送请求啦

先粘贴下代码吧各位,少安毋躁呀

def get_webhot():   #热搜函数
    url ="https://s.weibo.com/top/summary"  # 微博的地址

    res = requests.get(url)
    #这个就是再后台上面运行那个浏览器,不在表面上占用你的
    option = ChromeOptions()
    option.add_argument('--headless')
    option.add_argument("--no-sandbox")
    #这里也要输入
    browser = Chrome(options=option)
    browser.get(url)
    #解析那个web热搜前,按住ctrl+f会在下面出现一个框框,然后改就完事
    c = browser.find_elements_by_xpath('//*[@id="pl_top_realtimehot"]/table/tbody/tr/td[2]/a')
    #这个都看得懂,就一个文本输出
    context = [i.text for i in c]
    print(context)
    #返回
    return context

这里有一个xpath,不知道大家懂了没有,算了,还是讲一下吧
相信来看的应该还是有点了解的,鼠标右键,检查,按照这里的1,2,3步走就完事,在第三步右击,copy->copy xpath,由于这里不好截图,大家自行理解哈。爬取热搜排行榜数据(以微博为例)再保存数据库用的是selenium_第2张图片
然后大家按住crtl+f 键,会出现如图所示的框框:
爬取热搜排行榜数据(以微博为例)再保存数据库用的是selenium_第3张图片
这个在这里叫做搜索框,把刚刚那个xpath复制进去,可以看到是1of 1,
//*[@id="pl_top_realtimehot"]/table/tbody/tr[1]/td[2]/a
这是为什么呢,大家想一想:
好了,告诉答案,因为我们xpath那个只选中了一条,而没有选中所有,所有我们现在的任务就是选中热搜榜全部数据,再循环遍历就可以啦
爬取热搜排行榜数据(以微博为例)再保存数据库用的是selenium_第4张图片
好啦,只需要将**tr[1]**中删掉就可以了,现在不就是51条了嘛,很多的,接下来循环就可以了,在复制到代码中去。完事

4,数据库的连接

def get_conn():
    """
    :return: 连接,游标l
    """
    # 创建连接
    conn = pymysql.connect(host="localhost",
                           user="root",
                           password="123456",
                           db="cov",#这是数据库的名,自己看数据库那一章的把
                           charset="utf8")
    # 创建游标
    cursor = conn.cursor()  # 执行完毕返回的结果集默认以元组显示
    return conn, cursor

数据库的关闭


```python
def close_conn(conn, cursor):
    if cursor:
        cursor.close()
    if conn:
        conn.close()

5,写进数据库里面

def update_hotsearch():
    cursor = None
    conn = None
    try:
        context = get_webhot()
        print(f"{time.asctime()}开始热搜数据")
        conn,cursor = get_conn()
        sql = "insert into hotsearch(dt,content) values(%s,%s)"
        ts = time.strftime("%Y-%m-%d %X")
        for i in context:
            cursor.execute(sql,(ts,i))
        conn.commit()
        print(f"{time.asctime()}数据更新完毕")
    except:
        traceback.print_exc()
    finally:
        close_conn(conn,cursor)

接下来就正式启动啦:

update_hotsearch()

好了,结束,没看懂得小伙伴询问俺哟,点个赞再离开把。
这个是在b站看到写的哟,没事多看看b站撒

下图在这里插入图片描述

你可能感兴趣的:(笔记,爬虫,数据库,mysql,pycharm)