小白快速体验之爬虫抓取新浪热搜

首先要有一些准备工作,当然前提是需要了解一下python的基础知识。

安装所需要的语言环境和工具:
1、python 我使用的是python3.6.5版本
2、三方库 requests
安装命令:pip3 install requests
3、 Beautiful Soup
安装命令:pip3 install bs4
4、lxml
安装命令:pip3 install lxml
5、Pycharm
一个python的IDE 官网地址:https://www.jetbrains.com/pycharm/
当然也可以在终端直接编码

上码:
用pycharm创建一个python工程,然后创建一个python文件,比如 test.py,然后贴入下面代码,之后运行。

import requests
from bs4 import BeautifulSoup

mheaders = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept-Language": "en-US,en;q=0.9,zh-CN;q=0.8,zh-TW;q=0.7,zh;q=0.6",
    "Cache-Control": "max-age=0",
    "Connection": "keep-alive",
    "Host": "s.weibo.com",
    "Sec-Fetch-Mode": "navigate",
    "Sec-Fetch-Site": "none",
    "Sec-Fetch-User": "?1",
    "Upgrade-Insecure-Requests": "1",
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36"
}

targetUrl = 'https://s.weibo.com/top/summary?cate=realtimehot'

response = requests.get(targetUrl, headers=mheaders).text
soup = BeautifulSoup(response, 'lxml')
sort = 0
for hot_td in soup.find_all('td', class_="td-02"):
    # 标题
    hotTitle = hot_td.find('a').string
    sort += 1
    print('第%s位  %s ' % (sort, hotTitle))

输入结果:
在这里插入图片描述
简单说明:
1、requests是一个python的三方网络库,提供了简洁的http get\post请求等方法。requests.get(targetUrl, headers=mheaders) 这里的get就代表的是get方式请求,设置了headers是为了把请求伪装成浏览器请求,避免请求被拦截掉。

2、BeautifulSoup可以代替使用正则表达式去找到我们要抓取的html标签。soup.find_all(‘td’, class_=“td-02”) 就代表找到所有的class="td-02"的td标签。 在目标网站查看网页源代码可以看到要抓取的内容的样子为:

<td class="td-02">
   <a href="/weibo?q=%23%E6%B8%85%E6%98%8E%E8%BF%BD%E6%80%9D%E5%AE%B6%E5%9B%BD%E6%B0%B8%E5%BF%B5%23&Refer=new_time" target="_blank">清明追思家国永念
   </a>
</td>
...等等....

同理,hot_td.find(‘a’).string 就是在td标签中找到 a 标签取它包含的内容,就是我们要抓取的热搜内容了。

最后:
抓取的库还有很多种,真正的项目中还要考虑很多,比如如何抓取下一页内容、更换ip、数据入库等等,这里就当是自学了python之后,体验抓取的一个小demo。

今天是2020年4月4日,清明节,全国人民在今天为抗击疫情牺牲的英雄们默哀!不用多言,都在心里!祖国加油!

发布了7 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/u010823943/article/details/105308201