Python应用-爬虫实战-求是网周刊文章爬取

这篇具有很好参考价值的文章主要介绍了Python应用-爬虫实战-求是网周刊文章爬取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第1关:获取新闻url

任务描述

本关任务:编写一个爬虫,并使用正则表达式获取求是周刊2019年第一期的所有文章的url。详情请查看《求是》2019年第1期 。

相关知识

获取每个新闻的url有以下几个步骤:

  • 首先获取2019年第1期页面的源码,需要解决部分反爬机制;

  • 找到目标url所在位置,观察其特征;

  • 编写正则表达式,获取目标数据。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,使用正则表达式获取求是周刊2019年第一期的所有文章的url,返回的是一个包含所有url的列表。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出:

 
  1. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123924154.htm
  2. http://www.qstheory.cn/dukan/qs/2018-12/31/c_1123923896.htm
  3. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923886.htm
  4. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923852.htm
  5. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923828.htm
  6. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923817.htm
  7. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923778.htm
  8. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923740.htm
  9. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923715.htm
  10. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123923686.htm
  11. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123922609.htm
  12. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123922550.htm
  13. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123922484.htm
  14. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123922467.htm
  15. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123922434.htm
  16. http://www.qstheory.cn/dukan/qs/2019-01/01/c_1123924169.htm

开始你的任务吧,祝你成功!

此题需要用到正则表达式,以及soup中获取属性的函数get('href')

上代码:

import requests
import bs4
import re

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76'
}
def geturls():
    # ********** Begin ********** #

    responde = requests.get(f'http://www.qstheory.cn/dukan/qs/2014/2019-01/01/c_1123924172.htm')
    responde.encoding ='utf-8'
    content = responde.text
    soup = bs4.BeautifulSoup(content,'html.parser')

    all_a = soup.find_all('a')
    urls = []
    for a in all_a:
        if re.findall(r'\w*dukan\w*', a.get('href')) and '1123932149' not in str(a.get('href')):
            urls.append(a.get('href'))

    # ********** End ********** #
    return urls

if __name__ == "__main__":
    urls = geturls()
    for x in urls:
        print(x)

 第2关:获取文章内容

任务描述

本关任务:编写一个爬虫,请求上一关获取的每个url,获取每篇文章的标题、作者、正文以及文章中全部图片的完整url

相关知识

为了完成本关任务,你需要掌握xpath的基本使用。

选取节点:

路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点
/bookstore 选取根元素 bookstore。注:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!
bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取名为 lang 的所有属性。

谓语:

路径表达式 结果
/bookstore/book[1] 选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/book[last()] 选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素。
/bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素。
//title[@lang] 选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng'] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
/bookstore/book[price>35.00] 选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。
/bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

选取未知节点:

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。

编程要求

根据提示,在右侧编辑器Begin...End中补充代码,请求上一关获取的每个url,将每篇文章的标题、作者、正文以及文章中全部图片的完整url,并按照以下格式保存:

。。。。。。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

在代码中我使用了xpath的查询语句和BeautifulSoup,感觉混合使用比较方便哈哈哈,还是功夫不到家。

上代码:

import requests
import bs4
import re
from lxml import etree


def parsepage(urls):
    mainbody = []
    headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.76'
}
    for url in urls:
        response = requests.get(url, headers=headers)
        response.encoding = 'utf-8'
        soup = bs4.BeautifulSoup(response.text,'html.parser')
        tree = etree.HTML(response.text)

        # 获取图片的url
        img_urls = tree.xpath('//div[@class="highlight"]//img/@src')
        # 获取标题并去除首尾空格

        title = tree.xpath('//h1/text()')[0].strip()

        # 获取作者并去除首尾空格
        author = tree.xpath('//span[@class="appellation"]/text()')[1].strip()[3:]
        
        #获取正文内容
        content_t =''
        for p in soup.find_all('p'):
            content_t += p.text.strip()

        #保存提取的信息
        mainbody.append({
            'title': title,
            'author': author,
            'content': content_t,
            'imgurl': img_urls
        })
    return mainbody

都看到这里了,点个赞不过分吧( •̀ ω •́ )✧文章来源地址https://www.toymoban.com/news/detail-756547.html

到了这里,关于Python应用-爬虫实战-求是网周刊文章爬取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫实战——爬取新闻数据(简单的深度爬虫)

            又到了爬新闻的环节(好像学爬虫都要去爬爬新闻,没办法谁让新闻一般都很好爬呢XD,拿来练练手),只作为技术分享,这一次要的数据是分在了两个界面,所以试一下深度爬虫,不过是很简单的。  网页url 1.先看看网站网址的规律  发现这部分就是每一天的新闻

    2024年02月11日
    浏览(14)
  • 六个步骤学会使用Python爬虫爬取数据(爬虫爬取微博实战)

    用python的爬虫爬取数据真的很简单,只要掌握这六步就好,也不复杂。以前还以为爬虫很难,结果一上手,从初学到把东西爬下来,一个小时都不到就解决了。 第一步:安装requests库和BeautifulSoup库 在程序中两个库的书写是这样的: 由于我使用的是pycharm进行的python编程。所以

    2024年02月08日
    浏览(16)
  • python爬虫实战(1)--爬取新闻数据

    想要每天看到新闻数据又不想占用太多时间去整理,萌生自己抓取新闻网站的想法。 使用python语言可以快速实现,调用 BeautifulSoup 包里面的方法 安装BeautifulSoup 完成以后引入项目 定义请求头,方便把请求包装成正常的用户请求,防止被拒绝 定义被抓取的url,并请求加上请求

    2024年02月13日
    浏览(9)
  • python爬虫实战(3)--爬取某乎热搜

    1. 分析爬取地址 打开某乎首页,点击热榜 这个就是我们需要爬取的地址,取到地址 某乎/api/v3/feed/topstory/hot-lists/total?limit=50desktop=true 定义好请求头,从Accept往下的请求头全部复制,转换成json 2. 分析请求结果 通过请求可以看出, hot-lists/total?limit=50desktop=true 请求后的返回参数

    2024年02月11日
    浏览(16)
  • 【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

    1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置,福利待遇等最为关心的内容。在采集和解析完成后,使用 Excel 或 csv 文件保存。 2. 目标

    2024年02月02日
    浏览(17)
  • Python爬虫实战入门:爬取360模拟翻译(仅实验)

    需求 目标网站: https://fanyi.so.com/# 要求:爬取360翻译数据包,实现翻译功能 所需第三方库 requests 简介 requests 模块是 python 基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。 安装 pip install -i https://py

    2024年02月22日
    浏览(15)
  • 爬虫学习记录之Python 爬虫实战:爬取研招网招生信息详情

    【简介】本篇博客 为爱冲锋 ,爬取北京全部高校的全部招生信息,最后持久化存储为表格形式,可以用作筛选高校。 此处导入本次爬虫所需要的全部依赖包分别是以下内容,本篇博客将爬取研招网北京所有高校的招生信息,主要爬取内容为学校,考试方式,所在学院,专业

    2024年01月24日
    浏览(19)
  • Python爬虫实战-批量爬取下载网易云音乐

    大家好,我是python222小锋老师。前段时间卷了一套  Python3零基础7天入门实战 https://blog.csdn.net/caoli201314/article/details/132882813 1小时掌握Python操作Mysql数据库之pymysql模块技术 https://blog.csdn.net/caoli201314/article/details/133199207 一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、se

    2024年02月05日
    浏览(21)
  • python爬虫实战 scrapy+selenium爬取动态网页

    最近学习了scrapy爬虫框架,想要找个目标练练手。由于现在很多网页都是动态的,因此还需要配合selenium爬取。本文旨在记录这次学习经历,如有疑问或不当之处,可以在评论区指出,一起学习。 对scrapy不了解的同学可以阅读这篇文章 爬虫框架 Scrapy 详解,对scrapy框架介绍的

    2024年02月07日
    浏览(36)
  • Python爬虫实战:selenium爬取电商平台商品数据

    目标 先介绍下我们本篇文章的目标,如图: 本篇文章计划获取商品的一些基本信息,如名称、商店、价格、是否自营、图片路径等等。 准备 首先要确认自己本地已经安装好了 Selenium 包括 Chrome ,并已经配置好了 ChromeDriver 。如果还没安装好,可以参考前面的前置准备。 分析

    2024年04月11日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包