15 day初步爬虫

# requests - 请求页面,得到响应结果
# BuautifulSoup4 - 根据响应结果解析页面、提取数据
# 写入文件、数据库

import requests
from bs4 import BeautifulSoup

# bs4模块能从html或者xml中提取数据。
for page in range(1,11):
    print(f'第{page}页')
    URL=f'https://www.chinanews.com.cn/scroll-news/news{page}.html'
    # URL='https://101.qq.com/#/hero'
    # URL='https://movie.douban.com/top250'

    # headers={} --->字典:{key:value}
    # headers是给爬虫提供伪装的
    # User-Agent -->将爬虫伪装成浏览器
    Headers={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
    response = requests.get(url=URL,headers=Headers)
    # 如果状态码是200,爬虫可用
    if response.status_code == 200:
        # response.encoding='gbk'
        response.encoding = 'utf-8'
        # 打印网页源代码
        # print(response.text)
        # 为什么要对比打印结果和网页中的内容是否一致?
        """
        网页:分为静态页面和动态页面
        静态页面:内容写死的,除非人为的进行内容修改,否则这个页面的内容是一成不变的。
        动态页面:内容不是写死的。使用某种特殊的技术(JavaScript)使数据通过某种方式显示在页面中
        
        requests得到的结果是静态页面的结果。
        """
    #     BeautifulSoup(网页源码,解析器)-->将字符串类型的源代码转换为bs4类型
    #     bs模块提供了一系列提取数据的方法,这些方法的操作对象的bs4类型的数据。
        soup = BeautifulSoup(response.text,'html.parser')
        # print(soup,type(soup))
    # select:根据CSS选择器(标签、class、id等)定位数据,得到的是符合这个选择器的所有结果(整体是列表,列表中每个元素是一个Bs4类型的数据)
    # select_one:根据CSS选择器(标签、class、id等)定位数据,得到的是符合这个选择器的一个结果(是一个bs4类型数据)
    # text:从bs4类型数据中提取标签内的内容,结果为str
    # attrs:从bs4类型数据中提取标签内容属性值,结果为str
        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,type(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.chinanes.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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值