网站备案需要准备什么材料,中英文网站如何建设,wordpress博客平台,网站建设包括哪些费用文章目录 python爬虫 - 爬取微博热搜数据1. 第一步#xff1a;安装requests库和BeautifulSoup库2. 第二步#xff1a;获取爬虫所需的header和cookie3. 第三步#xff1a;获取网页4. 第四步#xff1a;解析网页5. 第五步#xff1a;分析得到的信息#xff0c;简化地址6. 第… 文章目录 python爬虫 - 爬取微博热搜数据1. 第一步安装requests库和BeautifulSoup库2. 第二步获取爬虫所需的header和cookie3. 第三步获取网页4. 第四步解析网页5. 第五步分析得到的信息简化地址6. 第六步爬取内容清洗数据7. 爬取微博热搜的代码实例以及结果展示 python爬虫 - 爬取微博热搜数据
python爬虫六部曲 第一步安装requests库和BeautifulSoup库 第二步获取爬虫所需的header和cookie 第三步获取网页 第四步解析网页 第五步分析得到的信息简化地址 第六步爬取内容清洗数据
1. 第一步安装requests库和BeautifulSoup库
在程序中引用两个库的书写是这样的
import requests
from bs4 import BeautifulSoup以pycharm为例在pycharm上安装这两个库的方法。在菜单【文件】–【设置】-【项目】–【Python解释器】中在所选框中点击软件包上的号就可以进行查询插件安装了。有过编译器插件安装的hxd估计会比较好入手。具体情况就如下图所示。
2. 第二步获取爬虫所需的header和cookie
以爬取微博热搜的爬虫程序为例。获取header和cookie是一个爬虫程序必须的它直接决定了爬虫程序能不能准确的找到网页位置进行爬取。 首先进入微博热搜的页面按下F12就会出现网页的js语言设计部分找到网页上的Network部分。如下图所示 然后按下ctrlR刷新页面此时法线右边 NetWork 部分出现很多信息。
如果进入后就有所需要的信息就不用刷新了当然刷新了也没啥问题。 过滤网络信息并拷贝其 cURL 信息 在 Network -- Filter 中依据网址https://s.weibo.com/top/summary中的关键信息进行过滤如 summary。 然后我们浏览Name这部分找到我们想要爬取的文件网络信息鼠标右键选择copy复制下网页的URL。 过滤后有效信息会少很多如下所示。选中所需的条目右键 -- Copy -- Copy as cURL 利用工具 Convert curl commands to code https://curlconverter.com/python/ 进行转换 转换后信息如下图所示选择【Copy to clipboard】并黏贴到Pycharm开发环境中即可直接使用 拷贝到 pycharm 中可直接作为源代码使用 3. 第三步获取网页
通过requests.get() 即可获取网页内容
response requests.get(https://s.weibo.com/top/summary, cookiescookies, headersheaders)
response.encoding utf-8
soup BeautifulSoup(response.text, html.parser)
print(fsoup value {soup})
4. 第四步解析网页
这个时候我们需要回到网页 【按下F12】– 【找到网页的Elements部分 -- 【选中左上角的小框带箭头的标志】进入【内容选择模式】如下图当点击或鼠标移动到对应网页内容时这个时候网页就会自动在右边显示出你获取网页部分对应的代码。 在找到想要爬取的页面部分的网页内容后在响应条目如“赵丽颖拍林更新”上右键退出【内容选择模式】。
然后将鼠标放置于 【Element】中对应的代码上右键 - copy -- selector。就如图所示。 5. 第五步分析得到的信息简化地址
黏贴到文本文件中信息如下
#pl_top_realtimehot table tbody tr:nth-child(6) td.td-02
同理再黏贴:
#pl_top_realtimehot table tbody tr:nth-child(8) td.td-02 a
其实刚才复制的selector就相当于网页上对应部分存放的地址。由于我们需要的是网页上的一类信息所以我们需要对获取的地址进行分析提取。
当然就用那个地址也是可行的就是只能获取到你选择的网页上的那部分内容。
可以发现几个地址有很多相同的地方唯一不同的地方就是tr部分。由于tr是网页标签后面的部分就是其补充的部分也就是子类选择器。可以推断出该类信息就是存储在tr的子类中我们直接对tr进行信息提取就可以获取到该部分对应的所有信息。所以提炼后的地址为
#pl_top_realtimehot table tbody tr td.td-02 a
这个过程对js类语言有一定了解的hxd估计会更好处理。不过没有js类语言基础也没关系主要步骤就是保留相同的部分就行慢慢的试总会对的。
6. 第六步爬取内容清洗数据
这一步完成后我们就可以直接爬取数据了。用一个标签存储上面提炼出的像地址一样的东西。标签就会拉取到我们想获得的网页内容。
# 爬取内容
content #pl_top_realtimehot table tbody tr td.td-02 a之后我们就要soup和text过滤掉不必要的信息比如js类语言排除这类语言对于信息受众阅读的干扰。这样我们就成功的将信息爬取下来了。
# 清洗数据
a soup.select(content)
将数据存储到文件夹中所以会有wirte带来的写的操作。想把数据保存在哪里或者想怎么用就看读者自己了。
# 数据存储
fo open(./weibo_down.txt, a, encodingutf-8)
for i in range(0, len(a)):a[i] a[i].textfo.write(a[i] \n)fo.close()7. 爬取微博热搜的代码实例以及结果展示 import osimport requests
from bs4 import BeautifulSoupcookies {SUB: _2AkMRSvbGf8NxqwFRmfsXyGPha4V-zwnEieKnFgcdJRMxHRl-yT9kqm0YtRB6OsrYKaj9W1OqyxFMGOF29qujP5sAwPq3,SUBP: 0033WrSXqPxfM72-Ws9jqgMF55529P9D9WWLhNh6syZaoHGnqmVxPNW0,_s_tentry: passport.weibo.com,Apache: 5636807549833.777.1712749042101,SINAGLOBAL: 5636807549833.777.1712749042101,ULV: 1712749042117:1:1:1:5636807549833.777.1712749042101:,
}headers {authority: s.weibo.com,accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.7,accept-language: zh-CN,zh;q0.9,cache-control: max-age0,# cookie: SUB_2AkMRSvbGf8NxqwFRmfsXyGPha4V-zwnEieKnFgcdJRMxHRl-yT9kqm0YtRB6OsrYKaj9W1OqyxFMGOF29qujP5sAwPq3; SUBP0033WrSXqPxfM72-Ws9jqgMF55529P9D9WWLhNh6syZaoHGnqmVxPNW0; _s_tentrypassport.weibo.com; Apache5636807549833.777.1712749042101; SINAGLOBAL5636807549833.777.1712749042101; ULV1712749042117:1:1:1:5636807549833.777.1712749042101:,referer: https://passport.weibo.com/,sec-ch-ua: Not_A Brand;v8, Chromium;v120, Google Chrome;v120,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: Linux,sec-fetch-dest: document,sec-fetch-mode: navigate,sec-fetch-site: same-site,sec-fetch-user: ?1,upgrade-insecure-requests: 1,user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36,
}response requests.get(https://s.weibo.com/top/summary, cookiescookies, headersheaders)
response.encoding utf-8
soup BeautifulSoup(response.text, html.parser)
print(fsoup value {soup})# 爬取内容
content #pl_top_realtimehot table tbody tr td.td-02 a# 清洗数据
a soup.select(content)# 数据存储
fo open(./weibo_down.txt, a, encodingutf-8)
for i in range(0, len(a)):a[i] a[i].textfo.write(a[i] \n)fo.close()