栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

BeautifulSoup4解析页面

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

BeautifulSoup4解析页面

BeautifulSoup4解析页面

步骤:
1.requests - 请求页面,得到响应结果
2.BeautifulSoup4 - 根据响应结果解析页面、提取数据
3.写入文件、数据库
(bs4 就是 BeautifulSoup4)
bs4模块能够从html或者xml中提取数据。
BeautifulSoup(网页源码,解析器) -> 将字符串类型的源代码转换为bs4类型。
bs模块提供了一系列提取数据的方法,这些方法的操作对象的bs4类型的数据。
headers = {} --> headers是应该字典:{key:value}。headers是给爬虫提供伪装的。
User-Agent --> 将爬虫伪装成浏览器。

为什么要对比打印结果和网页中的内容是否一致?

网页:分为静态页面和动态页面
静态页面:内容写死的,除非人为的进行内容修改,否则这个页面的内容是一成不变的。
动态页面:内容不是写死的,使用某种特殊的技术(JavaScript)使数据通过某种方式显示在页面中。
requests得到的结果是静态页面的结果。
select:根据CSS选择器(标签、class、id等)定位数据,得到的是符合这选择器的所有结果。(整体是列表,列表中每一个元素是一个bs4类型的数据)。
select_one:根据CSS选择器(标签、class、id等)定位数据,得到的是符合这选择器的一个结果。(是一个bs4类型数据)。
text:从bs4类型数据中提取标签内的内容,结果为str.
attris:从bs4类型数据中提取标签内容属性值,结果为str.

import requests
from bs4 import BeautifulSoup
for page in range(1, 11):
    print(f'第{page}页')
    URL = f'https://www.chinanews.com.cn/scroll-news/news{page}.html'
    Headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'
    }
    response = requests.get(url=URL, headers=Headers)
        if response.status_code == 200:
        response.encoding = 'utf-8'
        print(response.text)
        soup = BeautifulSoup(response.text, 'html.parser')
        li_list = soup.select('body > div.w1280.mt20 > div.content-left > div.content_list > ul > li')
        # print(li_list)
        for i in li_list:
            # print(i)
            if i.select_one('li > div.dd_lm > a') != None:
                news_type = i.select_one('li > div.dd_lm > a').text
                # print(news_type, type(news_type))
                news_title = i.select_one('li > div.dd_bt > a').text
                # print(news_title)
                news_href = 'https://www.chinanews.com.cn' + i.select_one('li > div.dd_bt > a').attrs['href']
                # print(news_href)
                news_time = i.select_one('li > div.dd_time').text
                # print(news_time)
                print(news_type, news_title, news_href, news_time)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号