爬取网页下的列表数据,以微博热搜榜为例

  1. 爬取网站
    在这里插入图片描述
    在这里插入图片描述

链接:https://s.weibo.com/top/summary?cate=realtimehot
2. 第一步:获取headers,cookie,response写法
F12打开开发者工具,CTRL+R刷新,出现下图,点1,再点2,得到3在这里插入图片描述
在要提取的网址上右键,copy–copy as curl(bash)在这里插入图片描述
把复制到的内容粘贴到https://curlconverter.com/这个网站(可能要科学上网),粘贴进去,就可以得到python格式直接可以用的headers,cookie,response
在这里插入图片描述

  1. 提取内容
    先点1和2,,2是元素选择器,在这里插入图片描述
    把上图2的图标移到要提取的标题上,多选几个,点1再点2,2就是标题对应的代码
    在这里插入图片描述
    右键,然后点copy–copy selector
    在这里插入图片描述
    得到以下的内容,我取了三个标题
#pl_top_realtimehot > table > tbody > tr:nth-child(15) > td.td-02 > a
#pl_top_realtimehot > table > tbody > tr:nth-child(8) > td.td-02 > a
#pl_top_realtimehot > table > tbody > tr:nth-child(18) > td.td-02 > a

可以看出公共部分是

content="#pl_top_realtimehot > table > tbody > tr > td.td-02 > a"

soup和text过滤掉不必要的信息,比如js类语言,排除这类语言对于信息受众阅读的干扰

fo = open("./热搜.txt",'a',encoding="utf-8")
a=soup.select(content)
for i in range(0,len(a)):
    a[i] = a[i].text
    fo.write(a[i]+'\n')
fo.close()

为了看的更直白,我写了一部分打印在控制台

a = soup.select(content)
for i in range(0, len(a)):
    a[i] = a[i].text
    print(a[i])
  1. 代码

.代码如下:

import os
import requests
from bs4 import BeautifulSoup

cookies = {
--改成你自己的
}

headers = {
   --改成你自己的
}
#数据存储
fo = open("./热搜数据.txt",'a',encoding="utf-8")
response = requests.get('https://s.weibo.com/top/summary', cookies=cookies, headers=headers)

# 解析网页
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
# 爬取内容
content = "#pl_top_realtimehot > table > tbody > tr > td.td-02 >a"
# 清洗数据
a = soup.select(content)
for i in range(0, len(a)):
    a[i] = a[i].text
    fo.write(a[i] + '\n')
fo.close()
#一下是我自己加的打印效果
a = soup.select(content)
for i in range(0, len(a)):
    a[i] = a[i].text
    print(a[i])

我也是学习其他博主的,非常感谢出这篇文章的作者大大,让我可以入门。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值